Подтвердить что ты не робот

Как использовать глобальные переменные в функциях python?

Как установить глобальную переменную внутри функции python?

4b9b3361

Ответ 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