Как установить глобальную переменную внутри функции python?
Как использовать глобальные переменные в функциях python?
Ответ 1
Чтобы использовать переменные global
внутри функции, вам нужно сделать global <varName>
внутри функции, например.
testVar = 0
def testFunc():
global testVar
testVar += 1
print testVar
testFunc()
print testVar
дает выход
>>>
0
1
Имейте в виду, что вам нужно только объявить их global
внутри функции, если вы хотите выполнять задания/изменять их. global
не требуется для печати и доступа.
Вы можете сделать,
def testFunc2():
print testVar
не объявив его global
, как мы это делали в первой функции, и все равно даст значение все в порядке.
Используя list
в качестве примера, вы не можете назначить list
без объявления его global
, но вы можете вызвать его методы и изменить список. Как следует.
testVar = []
def testFunc1():
testVar = [2] # Will create a local testVar and assign it [2], but will not change the global variable.
def testFunc2():
global testVar
testVar = [2] # Will change the global variable.
def testFunc3():
testVar.append(2) # Will change the global variable.
Ответ 2
Рассмотрим следующий код:
a = 1
def f():
# uses global because it hasn't been rebound
print 'f: ',a
def g():
# variable is rebound so global a isn't touched
a = 2
print 'g: ',a
def h():
# specify that the a we want is the global variable
global a
a = 3
print 'h: ',a
print 'global: ',a
f()
print 'global: ',a
g()
print 'global: ',a
h()
print 'global: ',a
Вывод:
global: 1
f: 1
global: 1
g: 2
global: 1
h: 3
global: 3
В основном вы используете глобальную переменную, когда вам нужна каждая функция для доступа к одной и той же переменной (объекту). Это не всегда лучший способ.
Ответ 3
Доступ к глобальной может выполняться любой функцией, но ее можно изменить только в том случае, если вы явно объявляете ее с ключевым словом "global" внутри этой функции. Возьмем, например, функцию, которая реализует счетчик. Вы можете сделать это с помощью глобальных переменных:
count = 0
def funct():
global count
count += 1
return count
print funct() # prints 1
a = funct() # a = 2
print funct() # prints 3
print a # prints 2
print count # prints 3
Теперь все хорошо и хорошо, но, как правило, не рекомендуется использовать глобальные переменные для чего угодно, кроме констант. У вас может быть альтернативная реализация с использованием закрытий, что позволит избежать загрязнения пространства имен и быть намного чище:
def initCounter():
count = 0
def incrementCounter():
count += 1
return count
#notice how you're returning the function with no parentheses
#so you return a function instead of a value
return incrementCounter
myFunct = initCounter()
print myFunct() # prints 1
a = myFunct() # a = 2
print myFunct() # prints 3
print a # prints 2
print count # raises an error!
# So you can use count for something else if needed!
Ответ 4
Явное объявление с помощью global <variable name>
внутри функции должно помочь
Ответ 5
В приведенном ниже примере мы имеем переменную c
, определенную вне любой другой функции. В foo
мы также объявляем c
, увеличиваем его и распечатываем. Вы можете видеть, что повторный вызов foo()
будет давать один и тот же результат снова и снова, потому что c
in foo
является локальным в области видимости функции.
В bar
, однако, перед c
добавляется ключевое слово global
. Теперь переменная c
ссылается на любую переменную c
, определенную в глобальной области (то есть наш c = 1
экземпляр, определенный перед функциями). Вызов bar
многократно обновляет глобальный c
вместо локального локального.
>>> c = 1
>>> def foo():
... c = 0
... c += 1
... print c
...
>>> def bar():
... global c
... c += 1
... print c
...
>>> foo()
1
>>> foo()
1
>>> foo()
1
>>> bar()
2
>>> bar()
3
Ответ 6
Нормальная переменная используется только внутри функции, глобальную переменную можно вызывать вне функции, но не использовать ее, если вам это не нужно, она может создавать ошибки, и крупные компании по программированию считают это новичок предмет.
Ответ 7
Я столкнулся с тем же вопросом/неправильно понял, что я хотел в течение нескольких дней, и я думаю, что вы, возможно, пытаетесь выполнить, это функция, которая выводит результат, который может быть использован после завершения функции.
То, как вы можете выполнить выше, - это использовать return "результат", а затем присвоить это переменной после функции. Вот пример ниже:
#function
def test_f(x):
y = x + 2
return y
#execute function, and assign result as another variable
var = test_f(3)
#can use the output of test_f()!
print var #returns 5
print var + 3 #returns 8