Автор оригинала: 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 поддерживает информацию о программе в таблицах символов.
Есть два типа таблиц символов:
- Локальный символ стол – хранит информацию, связанную с местным объемом программы.
- Глобальный символ столик – хранит информацию, связанную с глобальным объемом программы.
Стол символа 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 () возвращает глобальные переменные, и его можно использовать в отладке кода. Мы можем использовать его для идентификации глобальных переменных и функций и функций, доступных для программы. Мы также можем изменить глобальные переменные данные, но это не рекомендуется и в основном не требуется в обычных программах.
Ссылка: Официальная документация