English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной курс Python

Контроль потока в Python

Функции в Python

Типы данных Python

Файловые операции в Python

Объекты и классы в Python

Даты и время в Python

Продвинутые знания Python

Python Референс Мануал

Ключевое слово Global в Python

Перед чтением этой статьи убедитесь, что вы уже знаетеГлобальные, локальные и не локальные переменные в PythonНекоторые основы.

Введение в ключевое слово global

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

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

Основные правила ключевого слова global в Python:

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

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

  • Мы используем ключевое слово global для чтения и записи глобальных переменных внутри функции.

  • Использование ключевого слова global вне функции неэффективно

Использование глобальных ключевых слов (пример)

Давайте приведем пример.

Пример 1: Доступ к глобальной переменной изнутри функции

c = 1  # Глобальная переменная
def add():
    print(c)
add()

Когда мы запустим上面的 программу, вывод будет следующим:

1

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

Пример 2: Изменение глобальной переменной изнутри функции

c = 1  # Глобальная переменная
    
def add():
    c = c + 2  # Увеличить c на 2
    print(c)
add()

Когда мы запустим上面的 программу, вывод покажет ошибку:

UnboundLocalError: local variable 'c' referenced before assignment

Это потому, что мы можем только обращаться к глобальным переменным, но не можем изменять их изнутри функции.

Решение - использовать ключевое слово global.

Пример 3: Использование global для изменения глобальной переменной изнутри функции

c = 0  # Глобальная переменная
def add():
    global c
    c = c + 2  # Увеличить на 2
    print("Inside add():", c)
add()
print("In main:", c)

Когда мы запустим上面的 программу, вывод будет следующим:

Inside add(): 2
In main: 2

В上面的 программе мы определили c как глобальную ключевую слово внутри функции add().
Затем увеличьте переменную c на 1, то есть c = c + 2. После этого мы вызываем функцию add(). В конце мы выводим глобальную переменную c.
Как мы видим, переменные, находящиеся вне функции, также изменились c = 2.

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

В Python мы создаем модуль config.py для хранения глобальных переменных и обмена информацией между модулями Python в одной программе.

Вот как мы делимся глобальными переменными между модулями Python.

Пример 4: Общий доступ к глобальным переменным между модулями Python

Создайте файл config.py, чтобы хранить глобальные переменные

a = 0
b = "empty"

Создайте файл update.py, чтобы изменить глобальные переменные

import config
config.a = 10
config.b = "alphabet"

Создайте файл main.py для тестирования изменений значений

import config
import update
print(config.a)
print(config.b)

Когда мы запускаем файл main.py, вывод будет:

10
alphabet

В上文е мы создали три файла: config.py, update.py и main.py.

Этот модуль config.py хранитaиworth bглобальные переменные. В файле update.py мы импортируем модуль config.py и изменяемaиbworth. Таким же образом, в файле main.py мы импортируем модули config.py и update.py. В конце мы выводим и тестируем значение глобальных переменных, независимо от того, изменились ли они.

Глобальные переменные в вложенных функциях

Это метод использования глобальных переменных в вложенных функциях.

Пример 5: Использование глобальных переменных в вложенных функциях

def foo():
    x = 20
    def bar():
        global x
        x = 25
    
    print("До вызова bar: ", x)
    print("Немедленный вызов bar")
    bar()
    print("После вызова bar: ", x)
foo()
print("x в главном блоке: ", x)

Вывод:

До вызова bar:  20
Немедленный вызов bar
После вызова bar:  20
x в главном блоке:  25

В приведенном выше примере мы объявили глобальную переменную в вложенной функции bar(). В функции foo() переменная x не влияет на ключевое слово global.
До и после вызова bar переменная x принимает значение локальной переменной, то есть x = 20. За пределами функции foo переменная x будет принимать значение, определенное в функции bar, то есть x = 25. Это потому, что мы использовали ключевое слово global в функции bar (локальный контекст) для создания глобальной переменной.
Если мы сделали какие-либо изменения в функции bar(), эти изменения будут видны за пределами локального контекста, то есть в foo().