2013-12-18 2 views
0

Если я запустить скрипт с чем-то вроде:Минимальное видоизменение глобальной переменной из функции

someVar = "none" 

def someFunction(): 
    if whatever is whatever: 
     someVar = "somethingElse" 
    return someVar 

Затем в другой функции я проверяю someVar, будет someVar не будет «ни один» или «somethingElse»?

Я надеялся, что «somethingElse», но вместо этого, написав функцию, которая устанавливает someVar на что-то еще, я обнаружил, что someVar остается «none».

Ожидаемое? Если вы манипулируете глобальной переменной fromw в функции, происходит ли изменение глобальной переменной вперед?

+1

Я бы сказал, что это будет лучший стиль, чтобы передать эту переменную в качестве аргумента функции, или создать класс, содержащий эту переменную и функцию. Использование globals в python - обычно плохая идея. – SethMMorton

ответ

6

Вы можете использовать global ключевое слово, которое означает, что вы будете модифицировать глобальную переменную someVar:

someVar = "none" 

def someFunction(): 
    global someVar 
    if whatever is whatever: 
     someVar = "somethingElse" 
    return someVar 
+0

спасибо! Принятие в ближайшее время. так что «global someVar» в любом месте функции просто означает, что любая дополнительная ссылка на эту переменную внутри функции находится на глобальном уровне. –

+0

Да, это то, что делает глобальное. –

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