Найти Π² Π”Π·Π΅Π½Π΅
[PYTHON:TODAY]

πŸ‘¨β€πŸ’» ΠžΠ±Π»Π°ΡΡ‚ΠΈ видимости для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Python

ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ β€” это Ρ‚Π° Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, Π³Π΄Π΅ пСрСмСнная доступна, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π° ΠΈ Π²ΠΈΠ΄ΠΈΠΌΠ°. БущСствуСт Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ‚ΠΈΠΏΠ° области видимости для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Python: 🌡 Local (локальная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости) 🌡 Enclosing (ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π°Ρ) 🌡 (глобальная) 🌡 Built-in (встроСнная)
1. Local - локальная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости, опрСдСляСтся прямиком Π²Π½ΡƒΡ‚Ρ€ΠΈ своСго Π±Π»ΠΎΠΊΠ°
var = "Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Π°Ρ пСрСмСнная"
def func():
var = "Π›ΠΎΠΊΠ°Π»ΡŒΠ½Π°Ρ пСрСмСнная"
print(var)
print(var)
func()
2. Enclosing - позволяСт Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ· local видимости Π½Π° Π±ΠΎΠ»Π΅Π΅ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, Π½ΠΎ Π½Π΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ Π΅ΡΡ‚ΡŒ функция Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° функция, ΠΊΠ»ΡŽΡ‡ слово nonlocal позволяСт Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΠΉΡ‚ΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ видимости Π±ΠΎΠ»Π΅Π΅ высокой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ ΠΎΠ½Π° Π΅Ρ‰Π΅ Π½Π΅ являСтся глобальной
def func1():
name = "ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ"
print(name)
def func2():
nonlocal name
name = "Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ"
func2()
print(name)
func1()
3. Global -


ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ β€” это Ρ‚Π° Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, Π³Π΄Π΅ пСрСмСнная доступна, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π° ΠΈ Π²ΠΈΠ΄ΠΈΠΌΠ°.

БущСствуСт Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ‚ΠΈΠΏΠ° области видимости для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Python:

🌡 Local (локальная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости)

🌡 Enclosing (ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π°Ρ)

🌡 (глобальная)

🌡 Built-in (встроСнная)


1. Local - локальная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости, опрСдСляСтся прямиком Π²Π½ΡƒΡ‚Ρ€ΠΈ своСго Π±Π»ΠΎΠΊΠ°

var = "Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Π°Ρ пСрСмСнная"

def func():
var = "Π›ΠΎΠΊΠ°Π»ΡŒΠ½Π°Ρ пСрСмСнная"
print(var)

print(var)
func()

2. Enclosing - позволяСт Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ· local видимости Π½Π° Π±ΠΎΠ»Π΅Π΅ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, Π½ΠΎ Π½Π΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ Π΅ΡΡ‚ΡŒ функция Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° функция, ΠΊΠ»ΡŽΡ‡ слово nonlocal позволяСт Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΠΉΡ‚ΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ видимости Π±ΠΎΠ»Π΅Π΅ высокой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ ΠΎΠ½Π° Π΅Ρ‰Π΅ Π½Π΅ являСтся глобальной

def func1():
name = "ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ"
print(name)

def func2():
nonlocal name
name = "Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ"

func2()
print(name)

func1()

3. Global - глобальная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ опрСдСляСтся Π½Π° Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ модуля, ΠΈ ΠΎΡ‚ Ρ‚ΡƒΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ доступна Π² локальной области ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ спСц. слова global послС Ρ‡Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ глобальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ локальной области видимости

var = "Global"

def def_1():
global var
print(var)

print(var)
def_1()
print(var)

4. Built-in - встроСнная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости, которая позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стандартный Π½Π°Π±ΠΎΡ€ классов, эту ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡ€ΠΎΠ²Π½ΡΡ‚ΡŒ ΠΊ глобальной области. Бюда входят Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ ΠΊΠ°ΠΊ функция open() ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ встроСны Π² Python, ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сразу ΠΏΠΎ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Ρƒ