【发布时间】:2018-12-29 12:08:26
【问题描述】:
在学习 python 的过程中,我了解到 python 逐行运行,除非没有执行一行代码,否则它不会创建或分配变量,并且这个理论一切都很好,直到我尝试了类似的东西:
X = 1
def method1():
print (X) # Why global X, is not printed here
X = 20
print (X) # and then use local X here
我知道全局关键字也可以解决它,如果我在 method1() 中删除 X 的分配将解决它并打印全局 X,但我无法理解 python 如何事先知道我有一个 var 分配函数中代码的某处同名?
如有任何帮助,我们将不胜感激。
【问题讨论】:
-
Python 在运行代码之前会对其进行扫描,如下例所示。这就是为什么如果你犯了一个缩进错误,它会知道(例如,有一个没有正文的
if语句)。