Python中i: x=9语句的冒号作用及底层逻辑咨询
Python中
i: x=9语句的运行逻辑解析 先看你给出的代码及运行结果:
x=0 i: x=9 print(i) print(x)
运行输出:
9 0
核心解释
这是Python变量注解语法结合IPython(Jupyter内核)特殊行为的结果,标准Python中这种写法会直接报错,具体细节如下:
- 关于
i:IPython对变量注解做了扩展——当冒号后的内容是可求值的表达式时,会自动把表达式的结果赋值给变量。这里x=9被IPython解析为局部作用域内的赋值操作,结果为9,所以i被赋值为9,同时这个结果会作为i的注解存入当前作用域的__annotations__字典。 - 关于
x:x=9是在注解的临时局部作用域中执行的赋值,不会影响你之前定义的全局变量x,所以全局的x仍然保持初始值0。
底层操作
- IPython解析
i: x=9时,先处理冒号后的x=9:在临时局部作用域中创建变量x并赋值为9,该赋值操作的返回值是9。 - 将返回值9绑定到变量
i,同时把9作为i的注解信息,存入当前作用域的__annotations__字典(你可以运行print(__annotations__)验证,会得到{'i': 9})。 - 临时局部作用域中的
x被销毁,不会影响全局的x变量。
内容的提问来源于stack exchange,提问作者Ehsan Esbati
相关产品推荐
相关产品推荐

