2013-05-30 2 views
1

Хорошо, сейчас я делаю проект, чтобы сделать игру в блэкджек на питоне, и у меня проблемы. Одна из моих проблем - я не знаю, когда определять переменную как глобальную, в частности, в функциях с операторами if. Если у меня есть глобальная переменная вне оператора if, могу ли я утверждать, что эта переменная является глобальной в инструкции if? Например:Глобальные переменные в функциях с операторами if

x = 5 
def add(): 
    global x <--- ? 
    x += 1 
    if x == 7: 
     global x <--- ? 
     x = 5 

Я уверен, что мне нужно «глобальный х» на 1-й знак вопроса, но что на второй знак вопроса? Должен ли я по-прежнему указывать «глобальный x» в моей инструкции if, если бы я хотел, чтобы оператор if обновил глобальную переменную? Или глобальный x в начале функции делает x внутри внутри оператора if глобальным? Кроме того, если бы я хотел вернуть x здесь, где я должен это делать?

+1

Лучше старайтесь избегать глобальных переменных и использовать их только тогда, когда они действительно необходимы. –

ответ

3

Всего достаточно одного global.

От docs:

global утверждения является заявлением, которое имеет место в течение всего текущего блока кода.

x = 5 
def add(): 
    global x 
    x += 1 
    if x == 7: 
     x = 5 

Кроме того, если бы я хотел вернуться й здесь, где я должен это делать?

Если вы используете global в функции, то return x должен прийти после global x заявление, если вы не использовали global заявление, а также не определяет какой-либо локальной переменной x, то вы можете return x в любом месте функция.

Если вы определили локальную переменную x, тогда return x должен прийти после определения.

+1

На самом деле почти во всех ситуациях * no * global statement достаточно ;-) – Voo

Смежные вопросы