Следующий код (не непосредственно в интерпретаторе, но выполнить как файл)
def top(deck):
pass
def b():
global deck
выдает ошибку
SyntaxError: name 'deck' is local and global
на python2.6. 4 и
SyntaxError: name 'deck' is parameter and global
на python 3.1
python2.4, похоже, принимает этот код, как и интерактивный интерпретатор 2.6.4.
Это уже странно; почему «колода» конфликтует, если она глобальна в одном методе и параметр в другом?
Но все становится еще страннее. Переименуйте «top» в любое другое, и проблема исчезнет.
Кто-нибудь может объяснить такое поведение? Я чувствую, что здесь не хватает чего-то очень очевидного. Влияет ли имя «top» каким-либо образом на некоторые внутренние компоненты области видимости?
Обновление
Это действительно похоже на ошибку в ядре python. Я отправил отчет об ошибке .