Следующий код (не непосредственно в интерпретаторе, а исполняемый как файл)
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' в основном что-нибудь еще, и проблема исчезнет.
Может кто-нибудь объяснить это поведение? Я чувствую, что мне не хватает чего-то очень очевидного здесь. Является ли название "верх" каким-то образом влияющим на определенные области видимости?
Обновление
Это действительно является ошибкой в ядре python. Я опубликовал отчет об ошибке.