μμ½
1. λ€μμ€νμ΄μ€
μ μ λ° νμ©
- μ μ: κ°μ²΄λ₯Ό ꡬλΆν μ μλ λ²μ
- νμ©: κ°μ²΄λ§λ€ μμ μ μν₯λ ₯μ νμ¬ν μ μλ λ²μλ₯Ό μ ννμ¬ μ΄λ¦μ μ€λ³΅μ νμ©
1.1 κ°μ
Pythonμ λͺ¨λ κ²μ΄ κ°μ²΄λ‘ ꡬμ±λμ΄ μμΌλ©°, κ°μμ μ΄λ¦μ κ°μ§κ³ μλ€. κ·Έλ¬λ μ΄λ¦λ§μΌλ‘ κ° κ°μ²΄λ€μ ꡬλΆμ§κΈ°μλ κ°μ²΄λ€μ μ’ λ₯κ° λ무 λ§λ€. μλ₯Ό λ€μ΄, ν¨μ, λ³μ, ν΄λμ€ λ± μ΄λ¬ν κ°μ²΄λ€μ μ΄λ¦μ λ°λ‘ ꡬλΆμ§λ κ²μ λΉν¨μ¨μ μ΄λ€.
λ°λΌμ, λ€μμ€νμ΄μ€λ₯Ό ν΅ν΄ κ°μ²΄μ μν₯λ ₯ λ²μλ₯Ό μ ννμ¬ μ΄λ¦λ§μΌλ‘ ꡬλΆμ§λ νκ³λ₯Ό 보μνλ€.
1.2 νμ©
μλμ κ°μ΄ ν¨μ func1 μ func2 μμ λ³μ nameμ μ€λ³΅λμ§λ§ κ·Έ μν₯λ ₯μ κ° ν¨μμ μ’
μλμ΄μμΌλ©°, ν¨μ κ° μν₯μ μ£Όμ§ μλλ€.
def func1():
name = 'HYUN'
def func2():
name = 'SON'μ΄μ²λΌ λ€μμ€νμ΄μ€λ€μ locals() ν¨μλ₯Ό ν΅ν΄μ νμΈμ΄ κ°λ₯νμ¬ ν¬κ² 3κ°μ§λ‘ ꡬλΆλλ€.
- μ§μ λ€μμ€νμ΄μ€(Local namespace): ν¨μ(λ©μλ) λ³λ‘ ꡬλΆλλ λ€μμ€νμ΄μ€
- κΈλ‘λ² λ€μμ€νμ΄μ€(Global namespace): λͺ¨λ λ¨μλ‘ κ΅¬λΆλλ λ€μμ€νμ΄μ€
- λΉνΈμΈ λ€μμ€νμ΄μ€(Built-in namespace): λ΄μ₯ ν¨μ ν¬ν¨ν μ 체 μ½λ λ€μμ€νμ΄
κ°μ²΄λ₯Ό μ°Έκ³ νλ μμλ Local -> Global -> Built-in μμΌλ‘ νμνμ§λ§, μμ μ°Έμ‘°λ λΆκ°λ₯νλ€.
μλμ κ°μ΄ ν¨μ WhoIsGoat λ΄λΆμ wordλΌλ κ°μ²΄λ λͺ
μλμ§ μκΈ° λλ¬Έμ κ·Έ λ€μ νμ μμμΈ λͺ¨λ λ¨μλ‘ νμνμ¬ μ μ(global) λ³μμ΄ wordλ₯Ό μ°Ύμ μΆλ ₯νλ€.
word = 'Shohei Ohtani'
def WhoIsGoat():
print(word)
WhoIsGoat()
# "Shohei Ohtani"2. μ¬μ© μ΄μ ?
__name__ μ νΉμ§μ __main__μ΄λΌλ κ°(λ€μμ€νμ΄μ€)μΌλ‘ μ€μ λμ΄ μλ€.
print(__name__) # output: __main__κ·Έλ¬λ .py νμΌμ λͺ¨λλ‘μ λΆλ¬μ μ¬μ©νλ κ²½μ°μλ __name__μ λͺ¨λμ΄λ¦μ λ°ννλ€.
import numpy
print(numpy.__name__) # output: numpyλ°λΌμ, if __name__ == "__main__"μ μλ―Έλ ν΄λΉ κ΅¬λ¬Έμ΄ μ¬μ©λ νμ΄μ¬ νμΌμ μ§μ μ€νν λλ§ μλ μ½λλ₯Ό μ€ννλ€λ μλ―Έμ΄λ€.
μ¦, λ€λ₯Έ νμ΄μ¬ νμΌμμ λͺ¨λμ λΆλ¬μμ λ ν΄λΉ ꡬ문 μλ μ½λλ μ€νλμ§ μλλ€.
μλ₯Ό λ€μ΄, main.py νμΌ λ΄μμ example.py importλ§ νμ λΏμΈλ°, print λ¬Έμ΄ μΆλ ₯λλ λ¬Έμ κ° λ°μνλ€.
# example.py
print("Hello world!")
# main.py
import example
print("I'm not feeling well")
# output
# "Hello World"
# "I'm not feeling well"λ°λΌμ, μ΄λ₯Ό λ°©μ§νκ³ μ μλμ κ°μ΄ μ½λκ° μμ±λλ€.
μ΄λ₯Ό ν΅ν΄μ exampleλ₯Ό import ν΄λ printλ¬Έμ΄ μΆλ ₯λμ§ μλλ€!
# example.py
if __name__ == "__main__":
print("Hello world!")
# main.py
import example
print("I'm not feeling well")
# output
# "I'm not feeling well"μ°Έκ³ μ¬μ΄νΈ