Skip to main content

Глобальные и локальные переменные

Global and Local Variables in Python

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

Область Видимости Глобальных Переменных в Python

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

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

Пример 1: Как Определить Глобальную Переменную в Python

# Define a global variable
global_var = 10

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

Вот некоторые примеры того, как работает область видимости глобальных переменных в Python:

Пример 2: Доступ к Глобальной Переменной Внутри Функции

x = 5    #global variable
def func():
  print(x)   #accessing a global variable inside a function

func()   #calling the function
# Output: 5

В этом примере функция func получает доступ к глобальной переменной x, которая определена вне любой функции.

Пример 3: Доступ к Глобальной Переменной Вне Функции

x = 5   #global variable
def func():
  x = 10   #creating a new local variable
  print(x)   #accessing the local variable inside the function

func()
print(x)    #accessing the global variable outside the function
# Output: 10 5

В этом примере функция func создает новую локальную переменную x, присваивая ей значение 10. Таким образом, оператор print в функции относится к локальной переменной, а не к глобальной. Однако, когда оператор print вызывается вне функции, он относится к глобальной переменной x.

Как Работают Глобальные Переменные в Python

Глобальные переменные - это переменные, к которым можно обращаться и которые можно изменять во всем коде, независимо от места их объявления. Области видимости переменных в Python определяют доступность переменных в различных частях кода. Python поддерживает три области видимости переменных - локальную, глобальную и нелокальную. Локальные переменные - это переменные, которые объявляются и используются в конкретной функции или блоке кода, и их область видимости ограничивается этой конкретной функцией или блоком кода.

Как Изменить Глобальную Переменную в Функции

# declaring and initializing a global variable
global_var = "I am a global variable."

def func():
    # accessing and modifying the global variable within the function
    global global_var
    global_var = "I have been modified."

# calling the function to modify the global variable
func()

# printing the modified value of the global variable
print(global_var)    # Output: "I have been modified."

В Python, чтобы установить глобальную переменную, необходимо объявить и инициализировать переменную вне любой функции или блока. В приведенном выше коде глобальная переменная с именем global_var объявлена и инициализирована вне функции. Функция func() получает доступ и изменяет значение global_var с использованием ключевого слова global. Наконец, измененное значение глобальной переменной выводится на печать.

Попытка Доступа к Локальной Переменной за Пределами её Функции

def func():
    # declaring and initializing a local variable
    local_var = "I am a local variable."
    print(local_var)
    
# calling the function that uses the local variable
func()

# trying to access the local variable outside the function
# Output: NameError: name 'local_var' is not defined
# print(local_var)    

В приведенном выше коде, local_var является локальной переменной, объявленной и инициализированной внутри функции func(). Область видимости этой переменной ограничена только функцией. Когда функция вызывается, выводится значение local_var. Однако, когда мы пытаемся получить доступ к этой переменной вне функции, мы получаем NameError, так как переменная не определена в этой области видимости.

Роль Нелокальных Переменных в Python

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

Нелокальные переменные в Python - это переменные, которые определены во внешней функции, но к которым можно получить доступ во внутренней функции. Ключевое слово nonlocal используется для объявления нелокальной переменной в Python.

count = 0  # global variable

def increment():
    global count
    count += 1
    print(count)

increment()  # output: 1
increment()  # output: 2

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

def outer():
    x = "local"  # local variable
    
    def inner():
        nonlocal x  # non-local variable
        x = "nonlocal"
        print("inner:", x)
        
    inner()
    print("outer:", x)

outer()  # output: inner: nonlocal, outer: nonlocal

В этом примере x является локальной переменной в функции outer. Функция inner имеет доступ к этой переменной с использованием ключевого слова nonlocal, таким образом, мы можем изменить её значение. Когда мы вызываем функцию outer, функция inner выполняется и значение x изменяется на nonlocal. Это изменение отражается в функции outer, когда мы print значение x после выполнения функции inner.

Ключевое Слово global - Глобальные Переменные в Функциях Python

Давайте рассмотрим, как использовать глобальные переменные в функциях на Python. Глобальные переменные - это переменные, к которым можно получить доступ и которые можно изменить из любой части программы. В Python область видимости переменной определяет, где к ней можно получить доступ. Лучшая практика использования глобальных переменных в Python - минимизировать их использование, поскольку слишком много глобальных переменных может сделать программу сложной для понимания, отладки и обслуживания.

Один из примеров глобальной переменной - это функция возведения в степень в Python. Мы можем использовать цикл для расчёта степени числа. Вот пример:

power = 1

def calculate_power(num, exponent):
    global power
    power = 1
    for i in range(exponent):
        power *= num
    return power

print("Power of 2^3 is", calculate_power(2, 3))
print("Power of 5^4 is", calculate_power(5, 4))

В этом примере мы объявляем глобальную переменную power вне функции calculate_power(). Внутри функции мы используем эту глобальную переменную для хранения степени числа. Мы сбрасываем значение переменной power до 1 для каждого нового расчета.

Программа Для Подсчета Количества Вызовов Функции

count = 0

def my_function():
    global count
    count += 1
    print("This function has been called", count, "times.")

my_function()
my_function()
my_function()

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

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

Продвинутые Советы по Областям Видимости Переменных в Python и Соглашениям об Именовании

Продвинутые советы по областям видимости переменных в Python включают избегание глобальных переменных насколько это возможно, чтобы предотвратить конфликты имен и неожиданное поведение. Также рекомендуется использовать описательные имена переменных, которые следуют соглашениям об именовании PEP 8, таким как использование строчных букв и подчеркиваний для разделения слов.

Соглашения об именовании функций в Python следуют тем же руководствам PEP 8, используя строчные буквы и подчеркивания для разделения слов. Имена функций также должны быть описательными и передавать назначение функции.

# Local variable
def greet(name):
    message = "Hello, " + name + "!"
    return message
    
print(greet("Alice"))   # Output: Hello, Alice!

В этом примере мы объявляем локальную переменную message внутри функции greet(). Эта переменная доступна только внутри функции и не может быть доступна извне. Функция принимает параметр name и возвращает приветственное сообщение с включенным именем.

Пишите вместе с нами!

Вы можете внести свой вклад в статьи о Python на GitHub: создайте Fork, внесите правки и отправьте нам Pull request.

Profile picture for user AliaksandrSumich
Python engineer, expert in third-party web services integration.
Обновлено: 05/03/2024 - 21:52
Profile picture for user angarsky
Evgeniy Melnikovрецензент
Проверено и опубликовано