Use global variables in function python

Руководство по глобальным переменным

Переменная, доступ к которой можно получить из любого места в коде, называется глобальной. Ее можно определить вне блока. Другими словами, глобальная переменная, объявленная вне функции, будет доступна внутри нее.

С другой стороны, переменная, объявленная внутри определенного блока кода, будет видна только внутри этого же блока — она называется локальной.

Разберемся с этими понятиями на примере.

Пример локальных и глобальных переменных

 
 
def sum(): a = 10 # локальные переменные b = 20 c = a + b print("Сумма:", c) sum()

Переменная объявлена внутри функции и может использоваться только в ней. Получить доступ к этой локальной функции в других нельзя.

Для решения этой проблемы используются глобальные переменные.

Теперь взгляните на этот пример с глобальными переменными:

 
 
a = 20 # определены вне функции b = 10 def sum(): c = a + b # Использование глобальных переменных print("Сумма:", c) def sub(): d = a - b # Использование глобальных переменных print("Разница:", d) sum() sub()

В этом коде были объявлены две глобальные переменные: a и b . Они используются внутри функций sum() и sub() . Обе возвращают результат при вызове.

Если определить локальную переменную с тем же именем, то приоритет будет у нее. Посмотрите, как в функции msg это реализовано.

 
 
def msg(): m = "Привет, как дела?" print(m) msg() m = "Отлично!" # глобальная переменная print(m)

Здесь была объявлена локальная переменная с таким же именем, как и у глобальной. Сперва выводится значение локальной, а после этого — глобальной.

Ключевое слово global

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

Правила использования global

  • Если значение определено на выходе функции, то оно автоматически станет глобальной переменной.
  • Ключевое слово global используется для объявления глобальной переменной внутри функции.
  • Нет необходимости использовать global для объявления глобальной переменной вне функции.
  • Переменные, на которые есть ссылка внутри функции, неявно являются глобальными.

Пример без использования глобального ключевого слова.

 
 
c = 10 def mul(): c = c * 10 print(c) mul()
line 5, in mul c = c * 10 UnboundLocalError: local variable 'c' referenced before assignment

Этот код вернул ошибку, потому что была предпринята попытка присвоить значение глобальной переменной. Изменять значение можно только с помощью ключевого слова global .

 
c = 10 def mul(): global c c = c * 10 print("Значение в функции:", c) mul() print("Значение вне функции:", c)
Значение в функции: 100 Значение вне функции: 100

Здесь переменная c была объявлена в функции mul() с помощью ключевого слова global . Ее значение умножается на 10 и становится равным 100. В процессе работы программы можно увидеть, что изменение значения внутри функции отражается на глобальном значении переменной.

Глобальные переменные в модулях Python

Преимущество использования ключевого слова global — в возможности создавать глобальные переменные и передавать их между модулями. Например, можно создать name.py, который бы состоял из глобальных переменных. Если их изменить, то изменения повлияют на все места, где эти переменные встречаются.

1. Создаем файл name.py для хранения глобальных переменных:

Источник

Python : How to use global variables in a function ?

In this article we will discuss difference between local & global variable and will also see ways to access / modify both same name
global & local variable inside a function.

Table of Contents

Local variable vs Global variable

Local variable is a variable that is defined in a function and global variable is a variable that is defined outside any function or class i.e. in
global space. Global variable is accessible in any function and local variable has scope only in the function it is defined. For example,

# Global variable total = 100 def test(): # Local variable marks = 19 print('Marks = ', marks) print('Total = ', total)

Here 'total' is a global variable therefore accessible inside function test() too and 'marks' is a local variable i.e. local to function test() only. But what if we have a scenario in which both global & local variables has same name ?

Global & local variables with same name

Frequently Asked:

total = 100 def func1(): total = 15 print('Total = ', total) func1() print('Total = ', total)

Here 'total' is a global variable and func() function has a local variable with same name. By default a function gives preference to
local variable over global variable if both are of same name. Therefore in above code when we modified 'total' variable inside the function then it was not reflected outside the function. Because inside function func() total variable is treated as local variable.

But what if want to access global variable inside a function that has local variable with same name ?

Use of “global†keyword to modify global variable inside a function

If your function has a local variable with same name as global variable and you want to modify the global variable inside function then use 'global' keyword before the variable name at start of function i.e.

It will make the function to refer global variable total whenever accessed. Checkout this example,

total = 100 def func(): # refer to global variable 'total' inside function global total if total > 10: total = 15 print('Total = ', total) func() print('Total = ', total)

As you can see modification done to global variable total is now visible outside the function too.

When we use global keyword with a variable inside the function then the local variable will be hidden. But what if we want to keep bot the local & global variable with same and modify both in the function ? Let's see how to do that,

Using globals() to access global variables inside the function

As 'global' keywords hide the local variable with same name, so to access both the local & global variable inside a function there is an another way i.e. global() function.
globals() returns a dictionary of elements in current module and we can use it to access / modify the global variable without using 'global' keyword i,e.

total = 100 def func3(): listOfGlobals = globals() listOfGlobals['total'] = 15 total = 22 print('Local Total = ', total) print('Total = ', total) func3() print('Total = ', total)
Total = 15 Local Total = 22 Total = 11

As you can see that we have local variable and global variable with same name i.e. total and we modified both inside the function. By using dictionary returned by globals() to refer global variable instead of keyword 'global'. It will not hide local variable inside the function.

Handling UnboundLocalError Error

If we try to access a global variable with 'global' keyword or globals() inside a function i.e.

total = 22 def func2(): if total > 10: total = 15

It will throw an error like this,

UnboundLocalError: local variable 'total' referenced before assignment

To prevent this error we either need to use 'global' keyword or global() function i.e.

total = 22 def func2(): global total if total > 10: total = 15

The Complete example of global variable and globals() in Python

# Global variable total = 100 def test(): # Local variable marks = 19 print('Marks = ', marks) print('Total = ', total) def func1(): total = 15 def func(): # refer to global variable 'total' inside function global total if total > 10: total = 15 def func2(): global total if total > 10: total = 15 def func3(): listOfGlobals = globals() listOfGlobals['total'] = 11 total = 22 print('Local Total = ', total) def main(): print('Total = ', total) func1() print('Total = ', total) func() print('Total = ', total) func2() print('Total = ', total) func3() print('Total = ', total) if __name__ == '__main__': main()
Total = 100 Total = 100 Total = 15 Total = 15 Local Total = 22 Total = 11

Share your love

1 thought on “Python : How to use global variables in a function ?”

thank you. pulled my hair out over this, another irrational and bizarre python ‘feature’ this weekend.

Leave a Comment Cancel Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Terms of Use

Disclaimer

Copyright © 2023 thisPointer

To provide the best experiences, we and our partners use technologies like cookies to store and/or access device information. Consenting to these technologies will allow us and our partners to process personal data such as browsing behavior or unique IDs on this site and show (non-) personalized ads. Not consenting or withdrawing consent, may adversely affect certain features and functions.

Click below to consent to the above or make granular choices. Your choices will be applied to this site only. You can change your settings at any time, including withdrawing your consent, by using the toggles on the Cookie Policy, or by clicking on the manage consent button at the bottom of the screen.

The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.

The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.

The technical storage or access that is used exclusively for statistical purposes. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.

The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.

Источник

Читайте также:  Какая длина самого длинного питона
Оцените статью