Этот кодДоступ к функции локальной переменной
def reportRealDiagnostics():
ranks = 0
class Rank:
def __init__(self):
global ranks
ranks += 1
rank = Rank()
reportRealDiagnostics()
производит
NameError: global name 'ranks' is not defined
Я уверен, что это все, что вам нужно, чтобы ответить на этот вопрос.
Это импорт ant помнить, что второй вариант не семантически то же самое. Он помещает 'ряды' в глобальную область, он просто скрывается в пространстве имен функции. Множественные вызовы reportRealDiagnostics будут использовать одну и ту же переменную. Все еще может быть в порядке. – Evan
Существует более серьезная проблема, чем просто глобальная область действия с python 2.x. Проблема в том, что ** вы должны каждый раз инициализировать функционально-локальные переменные перед вызовом функции. ** Это побеждает всю идею наличия локальных переменных. – Val
@Val Если вы говорите об этом [http://docs.python.org/2/faq/programming.html#why-am-i-getting-an-unboundlocalerror-when-the-variable-has -a-value), то это не проблема, связанная с py2.x, она аналогично работает и в py3.x. Я бы тоже не назвал это проблемой. –