Основные тезисы
1. Переменная, которая существует вне функции, имеет область видимости внутри тела функции (Пример 1), если только функция не определяет переменную с тем же именем (Пример 2 и Пример 3), например:
Пример 1:
var = 2
def mult_by_var(x):
return x * var
print(mult_by_var(7)) # outputs: 14
Пример 2:
def mult(x):
var = 5
return x * var
print(mult(7)) # outputs: 35
Пример 3:
def mult(x):
var = 7
return x * var
var = 3
print(mult(7)) # outputs: 49
2. Переменная, которая существует внутри функции, имеет область видимости внутри тела функции (Пример 4), например:
Пример 4:
def adding(x):
var = 7
return x + var
print(adding(4)) # outputs: 11
print(var) # NameError
3. Вы можете использовать ключевое слово global
, за которым следует имя переменной, чтобы сделать область видимости переменной глобальной, например:
var = 2
print(var) # outputs: 2
def return_var():
global var
var = 5
return var
print(return_var()) # outputs: 5
print(var) # outputs: 5
Упражнение 1
Что произойдет, когда Вы попытаетесь запустить следующий код?
def message():
alt = 1
print("Hello, World!")
print(alt)
Упражнение 2
Что выведет следующий код?
a = 1
def fun():
a = 2
print(a)
fun()
print(a)
Упражнение 3
Что выведет следующий код?
a = 1
def fun():
global a
a = 2
print(a)
fun()
a = 3
print(a)
Упражнение 4
Что выведет следующий код?
a = 1
def fun():
global a
a = 2
print(a)
a = 3
fun()
print(a)