我写了一个Python程序,其中有个错误:false
而不是False
。然而,在编译时并没有发现这个错误。直到运行到这一行代码才通知到错误。
为什么会这样呢?Python解释器/编译器中的哪些因素导致它能够工作?
您有相关参考资料吗?
我写了一个Python程序,其中有个错误:false
而不是False
。然而,在编译时并没有发现这个错误。直到运行到这一行代码才通知到错误。
为什么会这样呢?Python解释器/编译器中的哪些因素导致它能够工作?
您有相关参考资料吗?
globals()["snyfr".decode("rot13")] = 17
x = false
实际上确实是这样的,因为第一行代码动态生成了一个名为false
的变量。
>>> def foo():
... return false
...
>>> def bar():
... global false
... false = False
...
>>> foo()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in foo
NameError: global name 'false' is not defined
>>> bar()
>>> foo()
False
foo
引发了一个NameError
,因为在foo
运行时,Python不知道false
是什么。但是bar
修改了全局范围并将false
插入为False
的另一个名称。
false
是一个有效的变量名,而不是一种语法错误。 - Martijn PietersTrue = 0; False = 1
。接下来将会发生一些有趣的事情。 - Tim Pietzcker