我读过下面的文章,但我仍然不确定。
如果我有一个myfunctions.py文件,其中包含以下代码。
x = 3
def f():
print x
x = 2然后,说$ python myfunctions.py运行得非常好。但是现在对上面的文件做一个小小的更改。新文件如下所示。
x = 3
def f():
print x
x = 2
f() # there is a function call now这一次,代码会发出一个错误。现在,我试着理解这种行为。到目前为止,这些都是我的结论。
x=3创建字节码有人能对此发表意见吗?提前谢谢。如果这件事之前已经被处理过了,我很抱歉。
发布于 2014-02-24 04:39:56
姆吉尔森得到一半的答案。
另一半是Python不会在函数(或函数对象)中寻找语法错误以外的错误,它不会执行。因此,在第一种情况下,由于f()没有被调用,所以不检查操作顺序错误。
在这方面,它不像C和C++,它们要求所有的东西都要预先声明。这有点像C++模板,在这些模板代码中的错误可能在代码实例化之前才会被发现。
https://stackoverflow.com/questions/21978925
复制相似问题