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

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

6 Solutions collect form web for “Как использовать глобальные переменные в функциях python?”

Чтобы использовать 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. 

Рассмотрим следующий код:

 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 

В основном вы используете глобальную переменную, когда вам нужна каждая функция для доступа к одной и той же переменной (объекту). Это не всегда лучший способ.

Доступ к глобальной может получить любая функция, но ее можно изменить только в том случае, если вы явно объявляете ее с ключевым словом «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! 

Явное объявление с использованием global <variable name> внутри функции должно помочь

В приведенном ниже примере мы имеем переменную c определенную вне любой другой функции. В foo мы также объявляем c , увеличиваем его и распечатываем. Вы можете видеть, что многократное вызов foo() приведет к повторению одного и того же результата снова, потому что c in foo является локальным в области видимости функции.

В bar , однако, ключевое слово global добавляется до c . Теперь переменная 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 

Нормальная переменная используется только внутри функции, глобальную переменную можно вызывать вне функции, но не использовать ее, если вам это не нужно, она может создавать ошибки, а крупные программирующие компании считают это новобрачным делать.

  • Использование ключевого слова «global» в Python
  • исключение python не распознано; как обращаться с исключением?
  • Python: как я могу использовать переменную из основного файла в модуле?
  • Глобальные переменные Python, похоже, не работают с модулями
  • name 'times' используется до глобальной декларации. Но IT объявляется!
  • Обнаружение изменения значения переменных python
  • Глобальная переменная и колба питона
  • Создать глобальную переменную в Киви
  • Python - лучший язык программирования в мире.