1. ๋ฒ์(Scope)
๋ฒ์(Scope)๋?๐
- ์ค์ฝํ(Scope)๋ ๋ณ์, ํจ์, ๊ฐ์ฒด ๋ฑ์ด ์ ํจํ ๋ฒ์๋ฅผ ๋งํ๋ค
- ํน์ ๋ณ์๋ ํจ์๊ฐ ์ด๋์์ ์ ๊ทผ ๊ฐ๋ฅํ์ง๋ฅผ ๊ฒฐ์ ํ๋ค
- LEGB ๊ท์น์ ๋ฐ๋ผ ์๋ํจ
- LEGB ๊ท์น์ด๋??
- ๋ณ์๋ฅผ ์ฐพ์ ๋ LEGB ์์๋ก ๊ฒ์ํจ:
- Local: ๊ฐ์ฅ ๊ฐ๊น์ด ํจ์ ๋ด๋ถ ์ค์ฝํ
- Enclosing: ์ค์ฒฉ ํจ์์ ๋ฐ๊นฅ์ชฝ ํจ์ ์ค์ฝํ
- Global: ๋ชจ๋ ์ ์ฒด์ ์ค์ฝํ
- Built-in: ํ์ด์ฌ ๋ด์ฅ ์ค์ฝํ
- ๋ณ์๋ฅผ ์ฐพ์ ๋ LEGB ์์๋ก ๊ฒ์ํจ:
- LEGB ๊ท์น์ด๋??
- ์ค์ฝํ ์ข ๋ฅ:
- 1. Local Scope (L)
- ์ ์: ํจ์ ๋ด๋ถ์์ ์ ์๋ ๋ณ์์ ์ค์ฝํ. ํจ์๊ฐ ํธ์ถ๋ ๋ ์์ฑ๋๊ณ , ํจ์ ์คํ์ด ๋๋๋ฉด ์๋ฉธํจ.
- ์:
- ์ ์: ํจ์ ๋ด๋ถ์์ ์ ์๋ ๋ณ์์ ์ค์ฝํ. ํจ์๊ฐ ํธ์ถ๋ ๋ ์์ฑ๋๊ณ , ํจ์ ์คํ์ด ๋๋๋ฉด ์๋ฉธํจ.
def my_function():
x = 10 # Local ๋ณ์
print(x)
my_function() # ์ถ๋ ฅ: 10
print(x) # ์ค๋ฅ ๋ฐ์ (x๋ Local Scope์์๋ง ์ ํจํจ)
- 2. Enclosing Scope (E)
- ์ ์: ์ค์ฒฉ๋ ํจ์(nested function)์์ ๋ฐ๊นฅ์ชฝ ํจ์์ Local Scope์
๋๋ค
- ์:
- ์ ์: ์ค์ฒฉ๋ ํจ์(nested function)์์ ๋ฐ๊นฅ์ชฝ ํจ์์ Local Scope์
๋๋ค
def outer_function():
y = 20 # Enclosing Scope ๋ณ์
def inner_function():
print(y) # Enclosing Scope์ ๋ณ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํจ
inner_function()
outer_function() # ์ถ๋ ฅ: 20
- 3. Global Scope (G)
- ์ ์: ๋ชจ๋ ๋ ๋ฒจ์์ ์ ์๋ ๋ณ์๋ ํจ์์ ์ค์ฝํ. ๋ชจ๋ ์ ์ฒด์์ ์ ๊ทผ ๊ฐ๋ฅํ๋ฉฐ, ์ ์ญ ๋ณ์๋ ์ฝ๋ ์ด๋์๋
์ฌ์ฉํ ์ ์๋ค(๋จ, ํจ์ ๋ด๋ถ์์ ๊ฐ์ ๋ณ๊ฒฝํ๋ ค๋ฉด global ํค์๋๊ฐ ํ์ํจ)- ์:
- ์ ์: ๋ชจ๋ ๋ ๋ฒจ์์ ์ ์๋ ๋ณ์๋ ํจ์์ ์ค์ฝํ. ๋ชจ๋ ์ ์ฒด์์ ์ ๊ทผ ๊ฐ๋ฅํ๋ฉฐ, ์ ์ญ ๋ณ์๋ ์ฝ๋ ์ด๋์๋
z = 30 # Global ๋ณ์
def my_function():
global z # Global ๋ณ์ ์์ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ ํธ์ถ
z = 40 # ๊ทธ๋ผ Global ๋ณ์๊ฐ ์์ ๋จ
print(z)
my_function() # ์ถ๋ ฅ: 40
print(z) # ์ถ๋ ฅ: 40
- 4. Built-in Scope (B)
- ์ ์: ํ์ด์ฌ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ ๋ด์ฅ ํจ์ ๋ฑ,,,์ด ํฌํจ๋ ์ค์ฝํ์
๋๋ค
- ์:
- ์ ์: ํ์ด์ฌ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ ๋ด์ฅ ํจ์ ๋ฑ,,,์ด ํฌํจ๋ ์ค์ฝํ์
๋๋ค
print(len("Python")) # Built-in ํจ์ len() ์ฌ์ฉ
์ค์ฝํ(Scope)์ ๊ด๋ จํ์ฌ ์์๋๋ฉด ์ข์ ํค์๋๐
- global
- ์ ์ญ ๋ณ์๋ฅผ ํจ์ ๋ด๋ถ์์ ์์ ํ ๋ ์ฌ์ฉํ๋ค
x = 5
def change_global():
global x
x = 10
change_global()
print(x) # ์ถ๋ ฅ: 10
- nonlocal
- ์ค์ฒฉ ํจ์์์ ๋ฐ๊นฅ ํจ์์ Local ๋ณ์๋ฅผ ์์ ํ ๋ ์ฌ์ฉํจ
def outer():
y = 5
def inner():
nonlocal y
y = 10
inner()
print(y)
outer() # ์ถ๋ ฅ: 10
- ~์ฃผ์ํด์ผํ ์ ~
- Global ๋จ์ฉ ๊ธ์ง: ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋จ์ด๋จ๋ฆด ์ ์์ผ๋ฏ๋ก ๊ผญ ํ์ํ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํด์ผํ๋ค
- Local ๋ณ์ ์ฐ์ ์์: ๋์ผํ ์ด๋ฆ์ ๋ณ์๊ฐ ๋ค๋ฅธ ์ค์ฝํ์ ์์ ๊ฒฝ์ฐ, Local ๋ณ์๊ฐ ์ฐ์ ๋๋ค
- Immutable ๊ฐ์ฒด ์์ : ์ ์ญ ๋ณ์๋ก ์ ์ธ๋ int, str๊ณผ ๊ฐ์ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅ(immutable) ๊ฐ์ฒด๋ฅผ ํจ์ ๋ด๋ถ์์ ์์ ํ๋ ค๋ฉด
global ํค์๋๊ฐ ํ์ํจ
'[๋ด๋ฐฐ์บ ] ๋ณธ ์บ ํ (24.11.25 ~ 25.03.01)๐๐ปโโ๏ธโ > ๊ฐ๋ ์ ๋ฆฌ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[241218] git branch ์ merge (3) | 2024.12.18 |
---|---|
[241217] ๋จธ์ ๋ฌ๋ ๊ฐ๋ ์ ๋ฆฌ ๋๋ฒ์งธ (0) | 2024.12.17 |
[241216] ๋จธ์ ๋ฌ๋ ๊ฐ๋ ์ ๋ฆฌ ์ฒซ๋ฒ์งธ (3) | 2024.12.16 |
[241213] ๊น๊ณผ ๊นํ๋ธ ์ฐ๋์ํค๊ธฐ (3) | 2024.12.13 |
[241213] ์ฐ์ฐ์์ ์ด์ง๋ฒ (1) | 2024.12.13 |