Peteryo01223 发表于 2021-1-6 14:30:03

第15课:为何花括号跟反斜杠一个道理?

原始问题:
第15课中,关于打印{},小甲鱼在视频中给出了一个例子,即:
'{{0}}'.format('不打印')

结果为:
'{0}'

我的问题:
我没听懂小甲鱼解释内容。
视频里,小甲鱼说:这里‘不打印’的参数,实际上是没有被打印出来的,因为没有字段可以被输出的,因为这个 0已经被解释掉了。像跟上面的反斜杠,一个道理。
(小甲鱼他到底在说什么?Python中,花括号跟反斜杠是一个道理?)

qiuyouzhi 发表于 2021-1-6 15:11:55

在字符串的format方法里面,花括号可以去掉在它里面的花括号的特殊功能,所以小甲鱼说它的功能和反斜杠一样。

Peteryo01223 发表于 2021-1-6 15:20:12

还要进一步请问:花括号可以去掉在它里面的花括号?就是说,Python认为,输入者输入了一个不具备任何意义的位置参数,因此不调用后面的“不打印”这个值,是么?那么就算是Python不调用后面,为何要打印出一个{0}来呢?在format前面,明明是一个定义位置的含义,怎么成为了被打印的内容?

jackz007 发表于 2021-1-6 16:12:10

       小甲鱼说的花括号和反斜杠功能一样指的是花括号具有转义功能,从这个意义上说,与反斜杠是一样的,倒不是说花括号所起的作用与反斜杠一样。

Peteryo01223 发表于 2021-1-6 16:18:03

jackz007 发表于 2021-1-6 16:12
小甲鱼说的花括号和反斜杠功能一样指的是花括号具有转义功能,从这个意义上说,与反斜杠是一样的, ...

那么请问:'{{0}}'.format('不打印')这里,外面的{}起到了转移功能后,这一行code,到底怎么阅读呢?是表示外面的花括号转义后,直接打印了里面的内容,即:{0}?既然能够打印出{0},为何打印不出“不打印”这三个字呢?

jackz007 发表于 2021-1-6 16:41:18

Peteryo01223 发表于 2021-1-6 16:18
那么请问:'{{0}}'.format('不打印')这里,外面的{}起到了转移功能后,这一行code,到底怎么阅读呢?是 ...

       道理很简单,因为 '{{0}}' 并非合法的转义,使用功能的前提是,必须严格遵守规则。

Peteryo01223 发表于 2021-1-6 16:45:24

jackz007 发表于 2021-1-6 16:41
道理很简单,因为 '{{0}}' 并非合法的转义,使用功能的前提是,必须严格遵守规则。

如果 '{{0}}'.format('不打印'),是非法转义,没有严格遵守规则,那么为何没有报错,却打印了前半部分呢?

jackz007 发表于 2021-1-6 16:52:49

Peteryo01223 发表于 2021-1-6 16:45
如果 '{{0}}'.format('不打印'),是非法转义,没有严格遵守规则,那么为何没有报错,却打印了前半部分呢 ...

       一般是因为程序存在严重的逻辑错误,无法继续执行才会结束并报错,比如,打开和读取一个并不存在的文件,被零除等等,格式描述符的问题显然并没有严重到这个程度。

Peteryo01223 发表于 2021-1-6 17:47:44

jackz007 发表于 2021-1-6 16:52
一般是因为程序存在严重的逻辑错误,无法继续执行才会结束并报错,比如,打开和读取一个并不存 ...

好的,谢谢啦,我理解了!

心驰神往 发表于 2021-1-11 10:00:21

Peteryo01223 发表于 2021-1-6 17:47
好的,谢谢啦,我理解了!

问题解决了吗LZ

Peteryo01223 发表于 2021-1-11 10:02:43

心驰神往 发表于 2021-1-11 10:00
问题解决了吗LZ

解决了,我马上给Jackz一个最佳。

心驰神往 发表于 2021-1-11 10:21:54

Peteryo01223 发表于 2021-1-11 10:02
解决了,我马上给Jackz一个最佳。

谢谢了
页: [1]
查看完整版本: 第15课:为何花括号跟反斜杠一个道理?