# Взаимодействие областей видимости в Python

Бывают случаи, когда внешняя (глобальная) и внутренняя (локальная) переменные имеют одно и тоже имя:

`num = 1 def func(): num = 2 print(num)`

При этом важно понимать, что локальная `num` хоть и имеет тоже название, то и глобальная, но для Python является другой переменной. Это значит, что глобальная `num` НЕ перезаписывается внутри функции, а сохраняет свое первоначальное значение. При вызове функции `func` в консоль выведется значение только локальной `num`, а через `print` - значение глобальной переменной:

`func() # выведет 2 print(num) # выведет 1`

Каким будет результат выполнения следующего кода:

`num = 10 def func(): num = 5 return num func() print(num)`

Каким будет результат выполнения следующего кода:

`num = 3 def func(): num = 4 return num num = func() print(num)`

Каким будет результат выполнения следующего кода:

`num = 1 def func(): num = 2 return 1 num = func() print(num)`

Каким будет результат выполнения следующего кода:

`num1 = 1 def func(): num2 = 2 func() print(num1)`

Каким будет результат выполнения следующего кода:

`num1 = 1 def func(): num2 = 2 func() print(num2)`

Каким будет результат выполнения следующего кода:

`num1 = 1 def func(): num2 = 2 func() num2 = 3 print(num2)`

Каким будет результат выполнения следующего кода:

`num1 = 1 num2 = 2 def func(): num2 = 3 func() print(num2)`

Каким будет результат выполнения следующего кода:

`num1 = 1 def func(): num1 = 2 print(num1)`
← →
↑