以下代码(不是直接在解释器中,而是作为文件执行)
def top(deck):
pass
def b():
global deck
产生错误
SyntaxError: name 'deck' is local and global
在Python 2上.6.4和
SyntaxError: name 'deck' is parameter and global
关于python 3.1
Python 2.4似乎接受了这段代码,2.6.4交互解释器也接受了这段代码.
这已经很奇怪了;如果"deck"在一个方法中是全局的,而在另一个方法中是参数,为什么"deck"会相互冲突?
但它变得更奇怪了.将"top"基本上重命名为其他任何名称,问题就会消失.
有人能解释一下这种行为吗?我觉得我错过了一些非常明显的东西."top"这个名称是否会以某种方式影响某些范围界定内部?
Update
这似乎确实是python核心中的一个bug.I have filed a bug report