Python 3中print后加冒号为何不报错?循环为何无限运行?
Python语法疑问解答
疑问1:在Python 3中,为何在print后添加冒号不会触发报错?
- Python 3支持变量标注语法,格式为
标识符: 标注表达式,如果要同时赋值则写成标识符: 标注表达式 = 值。 print是合法的标识符(哪怕它是内置函数),Python允许对其进行标注或重新赋值。你写的print :x=x+1会被解析为:给变量print添加标注x,同时把x+1的值赋给print,这完全符合语法规则,所以不会报错。
疑问2:以下循环未出现语法错误,反而进入无限运行状态,原因是什么?
代码片段:
x = 1 while x <= 10: print :x=x+1
- 循环体的语句根本没修改
x的值,而是在对print变量做标注+赋值操作。 x初始值是1,循环条件x <=10永远为真,因为没有任何代码改变x,所以循环会无限运行。- 你大概率是想写
print(x); x +=1这类逻辑,但当前写法完全偏离预期,和x的自增没有任何关系。
内容的提问来源于stack exchange,提问作者ArminAshrafi
相关产品推荐
相关产品推荐

