Рубрики
Без рубрики

Глобальные переменные в Python

Глобальные переменные в Python определяются вне любого функции. Мы можем получить доступ к глобальным переменным везде в Python. Функция глобального ключевого слова и глобал ().

Автор оригинала: Pankaj Kumar.

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

Глобальные переменные в Python

Глобальные переменные определяются вне функции. Мы можем получить доступ к глобальной переменной во всех частях программы Python.

Пример Python Global Primations Пример

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

website = "JournalDev.com"


def return_website():
    return website


print(f'My favorite website is {return_website()}')

Выход:

My favorite website is JournalDev.com

Переменная «веб-сайт» определяется в программе, снаружи функции. Итак, это становится глобальной переменной.

Использование глобального ключевого слова для доступа к глобальной переменной

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

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

website = "JournalDev.com"


def print_website():
    global website
    print(f'My favorite website is {website}')

    website = 'Wikipedia.com'
    print(f'My favorite website is {website}')


print_website()

Выход:

My favorite website is JournalDev.com
My favorite website is Wikipedia.com

Если мы не используем ключевое слово Global, программа бросает сообщение об ошибке «UnsoundLocalError: локальная переменная, указанная до назначения».

Лучшая практика – избегать использования того же имени, что и глобальная переменная и держитесь подальше от конфликтов имен.

Быстрое слово на функции Python Globals ()

Функция Python Globals () Возвращает словарь, представляющий текущую таблицу глобального символа. Этот словарь содержит глобальные переменные имя и его значения. Мы можем использовать эту функцию, чтобы получить быструю информацию о всех глобальных переменных.

Python Program поддерживает информацию о программе в таблицах символов.

Есть два типа таблиц символов:

  1. Локальный символ стол – хранит информацию, связанную с местным объемом программы.
  2. Глобальный символ столик – хранит информацию, связанную с глобальным объемом программы.

Стол символа Python содержит подробную информацию о именах переменных, методах, классах и т. Д.

Функция Python Globals () не принимает никаких аргументов.

print(globals())

Выход:

{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x10a99b358>, '__spec__': None, '__annotations__': {}, '__builtins__': , '__file__': '/Users/pankaj/Documents/github/journaldev/Python-3/basic_examples/python_globals_example.py', '__cached__': None}

Он также печатает сценарий Python из того, где называется эта функция.

Давайте посмотрим на вывод, если та же функция вызывается из интерпретатора Python.

$ python3.7
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 26 2018, 23:26:24) 
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print(globals())
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': , '__spec__': None, '__annotations__': {}, '__builtins__': }
>>> 

На этот раз в выходе нет атрибута __File__.

Глобальные переменные в словаре Globals ()

Как мы упоминали ранее, что таблица глобального символа содержит информацию о глобальных переменных.

Давайте посмотрим на это простым примером.

name = 'Pankaj'

print(globals())

Выход:

{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x10a99b358>, '__spec__': None, '__annotations__': {}, '__builtins__': , '__file__': '/Users/pankaj/Documents/github/journaldev/Python-3/basic_examples/python_globals_example.py', '__cached__': None, 'name': 'Pankaj'}

Глобальный словарь символов тоже содержит переменную «Имя».

Одной из особенностей глобалей () является то, что мы можем изменить переменные в глобальном словаре. Поскольку это словарь, мы можем получить значение определенного ключа тоже.

globals()['name'] = 'David'

print(globals()['name'])

Выход: Дэйвид

Давайте посмотрим, содержит ли глобальные () локальные переменные области или нет. Для этого давайте определим функцию и некоторые переменные внутри нее.

def fx():
    local = ''
    global gl
    gl = 'Global'


fx()  # calling fx() to set the variables
print(globals())

print(globals()['gl'])

Выход:

{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x10a99b358>, '__spec__': None, '__annotations__': {}, '__builtins__': , '__file__': '/Users/pankaj/Documents/github/journaldev/Python-3/basic_examples/python_globals_example.py', '__cached__': None, 'name': 'David', 'fx': , 'gl': 'Global'}

Global

Переменная «GL» является частью глобального словаря, потому что его объем является глобальным. Принимая во внимание, что «локальная» переменная не является частью глобального словаря из-за иметь локальный объем.

Заключение

Глобальные переменные Python очень легко определить и использовать. Функция Globals () возвращает глобальные переменные, и его можно использовать в отладке кода. Мы можем использовать его для идентификации глобальных переменных и функций и функций, доступных для программы. Мы также можем изменить глобальные переменные данные, но это не рекомендуется и в основном не требуется в обычных программах.

Ссылка: Официальная документация