[python] if __name__ == '__main__' : μ μ 체
π’ κ°μ
μ½λ©ν μ€νΈλ₯Ό μ€λΉνλ©΄μ, νμ΄μ¬μΌλ‘ μ½λλ₯Ό ꡬνν μΌμ΄ λ§μ΄ μκ²Όλ€.
κ·Όλ°, μΌλ§κ° μ§λμ§ μμμ, κ°μ΄ 곡λΆνλ, νμ΄μ¬μΌλ‘ ꡬνμ νλ λͺλͺ μ¬λλ€, μ½λλ₯Ό 보λ€κ°..
μλ₯Όλ€μ΄, λ μμ ν©κ³Ό κ³±μ ꡬνλ μ½λλ₯Ό ꡬννλ€κ³ μΉλ©΄
- case.1
n,m = map(int,input().split())
print(n + m)
print(n * m)
- case.2
def sum(self,a,b):
return a + b
def mul(self,a,b):
return a * b
if __name__ == '__main__' :
n,m = map(int,input().split())
print(sum(n,m))
print(mul(n,m))
μμ κ°μ΄, λκ°μ§ μΌμ΄μ€λ‘ ꡬλΆλλ€.
case.1μ΄ νμ΄μ¬μΌλ‘ κ°μνμ§ μΌλ§μλ, λ΄ μ½λꡬνλ°©μ
case.2κ° λͺλͺ λΆλ€μ μ½λꡬνλ°©μ
κ²°λ‘ λ§, λ¨Όμ μ 리νλ©΄, case.2 λ°©μμΌλ‘, μμΌλ‘ μ νΈνλκ²μ΄ μ΄μμ (?)μ΄λ€.
(λ¬Όλ‘ , μμ μμλ, μμ£Ό~~κ°λ¨ν μμλ€λ³΄λ, case.1λ°©μμ΄ "λ 보기μλ, κ°λ¨ν΄ 보μ΄μ§μλλ" ν μ μμ§λ§, κ·Έκ²μ λ¬Έμ κ° μλλ€.
μμ κΈ°λ₯μ νλ νλ‘κ·Έλ¨μ΄λΌλ, κ°κ°μ λ©μλν μν€κ³ , main(λ©μΈ)μμ ν΄λΉ λ‘μ§μ΄ μ€νλκ² μμ±νλ μ΅κ΄μ λ€μ¬μΌ νλ€.
νμ, μ½λ©ν
μ€νΈμ©μ΄ μλκ³ , νλ‘μ νΈκ°λ
μΌλ‘, μ κ·Όμ νκ² λλ©΄, μ°λ¦¬λ λν,
μ€ν¬λ¦½νΈνμΌλ‘ μ€ννλ λ°©μ VS λͺ¨λλ‘ μ¬μ©νλ λ°©μμ ꡬλΆν΄μ μκ³ μμ΄μΌνλ€.
π’ if __name__ == '__main__' :
μΌλ¨, κ·ΈλΌ λ€μ μ£Όμ λ‘ λμμ보μ.
if __name__ == '__main__':
νμ΄μ¬ μ½λλ€μ 보면, μ¬λ¬ λ©μλλ, ν΄λμ€κ° ꡬνλμ΄μκ³ , λ§μ§λ§μλ, μμ μ½λκ° νμ 보μ΄λλ°, μ΄κ² λκΉ.
π μ΄ μ½λμ μλ―Έλ, νμ¬ μ€ν¬λ¦½νΈ νμΌμ΄ μ€νλλ μνλ₯Ό νμ νκΈ° μν΄ μ¬μ©
μλ₯Ό λ€μ΄λ³΄μ.
π hello.py
print('hello λͺ¨λ μμ')
print('hello.py __name__:', __name__) # __name__ λ³μ μΆλ ₯
print('hello λͺ¨λ λ')
π main.py
import hello # hello λͺ¨λμ κ°μ Έμ΄
print('main.py __name__:', __name__) # __name__ λ³μ μΆλ ₯
π μ€νκ²°κ³Ό
hello λͺ¨λ μμ
hello.py __name__: hello
hello λͺ¨λ λ
main.py __name__: __main__
π μ€νμ ν΄λ³΄λ©΄, hello.py νμΌκ³Ό, main.pyνμΌμ __name__ μ λ³μ κ°μ΄ μΆλ ₯λ©λλ€.
νμ΄μ¬μμ importλ‘ λͺ¨λμ κ°μ Έμ€λ©΄, ν΄λΉ μ€ν¬λ¦½νΈ νμΌμ΄ ν λ² μ€νμ΄ λ©λλ€.
μμ μμλ₯Ό 보면, helloλͺ¨λμ κ°μ Έμ€λ©΄, hello.pyμμ μ½λκ° μ€νλκ³ , λ°λΌμ, hello.pyμ __name__ λ³μμλ 'hello'κ° λ€μ΄κ°κ³ , main.pyμ __name__ λ³μμλ '__main__' μ΄ λ€μ΄κ°λ κ²μ΄κ³ , μ΄λ₯Ό μΆλ ₯μΌλ‘ νμΈ ν μ μμ£ ?
μ¦, __name__ = λͺ¨λμ μ΄λ¦μ΄ μ μ₯λλ λ³μμ΄κ³
importλ‘ λͺ¨λμ κ°μ Έμμ λ, λͺ¨λμ μ΄λ¦μ΄ λ€μ΄κ°λ κ²μ΄μ£ .
"νμ΄μ¬ μΈν°ν리ν°"λ‘ μ€ν¬λ¦½νΈ νμΌμ μ§μ μ€ννμ λλ (κ·Όλ°,,pythonλ μ€ν¬λ¦½νΈ μΈμ΄μ λλ€.) μμ κ°μ κ²°κ³Όλ₯Ό 보μ λλ€. μ΄κ²μ, μ½μ(ν°λ―Έλ, λͺ λ Ήν둬ν¬νΈ, cmd λ€ κ°μλ§)μμ pythonμΌλ‘ main.pyμ μ€ννλ€κ³ ν΄λ΄ μλ€.
C:\project>python main.py
hello λͺ¨λ μμ
hello.py __name__: hello
hello λͺ¨λ λ
main.py __name__: __main__
μμ , μ€ν¬λ¦½νΈνμΌ μ€νκ³Ό κ°μ΄, hello.py νμΌμ __name__ λ³μμ 'hello' μ main.py νμΌμ __name__ λ³μμ '__main__' μ΄ λ€μ΄κ°λ€μ.
νμ§λ§, λ€μκ³Ό κ°μ΄ pythonμΌλ‘ μ΄λ²μλ, main.pyκ° μλ !, hello.py νμΌμ μ€νν΄λ³΄λ©΄, κ²°κ³Όκ° μ‘°κΈ λ€λ¦ λλ€.
C:\project>python hello.py
hello λͺ¨λ μμ
hello.py __name__: __main__ // μ΄ λΆλΆ
hello λͺ¨λ λ
μ΄λ²μλ, hello.pyμ __name__ μ λ³μκ°μ μμ μμμ κ°μ 'hello'κ° μλ
λͺ¨λμ μ΄λ¦μ΄ μλλΌ( μ¦, __name__ μ΄ μλλΌ ) __main__ μ΄ λ€μ΄κ°λλ€ !
μ¦, μ΄λ€ μ€ν¬λ¦½νΈνμΌμ΄λ , νμ΄μ¬ μΈν°ν리ν°κ° μ΅μ΄λ‘ μ€νν μ€ν¬λ¦½νΈ νμΌμ __name__ λ³μμλ '__main__' μ΄ λ€μ΄κ°λ κ²μ΄μ£ . μ΄λ νλ‘κ·Έλ¨μ "μμμ (entry point)"μ΄λΌλ λ»μ λλ€.
νμ΄μ¬μ μ΅μ΄λ‘ μμνλ μ€ν¬λ¦½νΈ νμΌκ³Ό λͺ¨λμ μ°¨μ΄κ° μμ΅λλ€.
μ΄λ€ μ€ν¬λ¦½νΈ νμΌμ΄λ , μμμ μ΄ λ μ μκ³ , λͺ¨λλ λ μ μλ κ²μ
λλ€.
κ·Έλμ __name__ λ³μλ₯Ό ν΅ν΄ νμ¬ μ€ν¬λ¦½νΈνμΌμ΄ μμμ μΈμ§ ? λͺ¨λμΈμ§ ? νλ¨νλ κ²μ
λλ€.
κ³μ μΈκΈνκ³ μλ,
if __name__ == '__main__' :
μ²λΌ __name__ λ³μμ κ°μ΄ '__main__' μΈμ§ νμΈνλ μ½λλ νμ¬ μ€ν¬λ¦½νΈνμΌμ΄ νλ‘κ·Έλ¨μ μμμ μ΄ λ§λμ§ νλ¨νλ μμ μΈ κ²μ λλ€.
μ¦, μ€ν¬λ¦½νΈνμΌμ΄ λ©μΈ νλ‘κ·Έλ¨μΌλ‘ μ¬μ©λ λμ, λͺ¨λλ‘ μ¬μ©λ λλ₯Ό ꡬλΆνκΈ° μν μ©λλΌ μκ°νλ©΄ λ©λλ€.
π’ μ€ν¬λ¦½νΈνμΌλ‘ μ¬μ©ν κ²½μ° vs λͺ¨λλ‘ μ¬μ©ν κ²½μ°
λ§μ§λ§μΌλ‘, κ·ΈλΌ, pythonνμΌμ μ€ν¬λ¦½νΈνμΌλ‘ μ¬μ©ν κ²½μ°μ λͺ¨λλ‘ μ¬μ©ν κ²½μ°μ μλ₯Ό λ³΄κ³ λ§λ¬΄λ¦¬ ν©μλ€.
- μ€ν¬λ¦½νΈνμΌλ‘ μ€νν κ²½μ°
π calc.py
def add(a, b):
return a + b
def mul(a, b):
return a * b
if __name__ == '__main__': # νλ‘κ·Έλ¨μ μμμ μΌ λλ§ μλ μ½λ μ€ν
print(add(10, 20))
print(mul(10, 20))
π μ€νκ²°κ³Ό
// IDEμμ μ€νν κ²½μ°
30
200
====================================
// λͺ
λ Ήν둬ν¬νΈ(cmd)μμ μ€νν κ²½μ°
C:\project>python calc.py
30
200
IDEμμ μ€ννκ±°λ, λͺ λ Ήν둬ν¬νΈκ°μ νμ΄μ¬ μΈν°ν리ν°λ‘ μ€ννλ©΄ 10,20μ ν©κ³Ό κ³±μ΄ μΆλ ₯λ©λλ€.
μ¦, "νλ‘κ·Έλ¨μ μμμ " μΌ λλ, if __name__ == '__main__' : μλμ μ½λκ° μ€νμ΄ λλ κ²μ΄μ£ .
( μ΄ μμμμλ, print(add(10,20)) , print(mul(10,20)) μ΄ λ μ€μ μ½λκ° μ€νμ΄ λλ κ²μ΄μ£ . )
- λͺ¨λλ‘ μ¬μ©ν κ²½μ°
>>> import calc
>>>
λͺ¨λλ‘ κ°μ Έμμ λλ, μ무κ²λ μΆλ ₯μ΄ λμ§λ μμ£ ? μλλ©΄ __name__ λ³μμ κ°μ΄ '__main__' μΌ λλ§, 10,20μ ν©κ³Ό κ³±μ μΆλ ₯νλλ‘ λ§λ€μκΈ° λλ¬Έμ λλ€.
μ¦, μ€ν¬λ¦½νΈνμΌμ λͺ¨λλ‘ μ¬μ©ν λλ, calc.add, calc.mul μ²λΌ "ν¨μλ§ μ¬μ©νλ κ²μ΄ λͺ©μ " μ΄λ―λ‘, 10,20μ ν©κ³Ό κ³±μ μΆλ ₯νλ μ½λλ νμκ° μμ΅λλ€.
μ΄λ΄λλ, μμμ²λΌ, λ¨Όμ μ¬μ©ν λͺ¨λμ, importμν¨λ€μ, λ€μκ³Ό κ°μ΄ calc.addμ calc.mul ν¨μμ μνλ κ°μ λ£μ΄μ μ¬μ©νλ©΄ λ©λλ€.
>>> calc.add(50, 60)
110
>>> calc.mul(50, 60)
3000
π’ μ°Έκ³
- νμ΄μ¬μ μ νλ‘κ·Έλ¨μ μμμ μ΄ μ ν΄μ Έ μμ§ μλμ ?
( Cλ₯Ό μλ‘λ€λ©΄, int main(void) { } κ°μ μμμ μ΄ μλλ°.. )
π νμ΄μ¬μ΄ μ²μμ κ°λ° λ λΉμμλ 리λ
μ€(Linux/Unix)μμ μ¬μ©νλ "μ€ν¬λ¦½νΈμΈμ΄" κΈ°λ°μ΄μκΈ° λλ¬Έμ, νλ‘κ·Έλ¨μ μμμ μ΄ λ°λ‘ μ ν΄μ Έ μμ§ μμλ€κ³ ν©λλ€.
λ³΄ν΅ λ¦¬λ
μ€/μ λμ€μ μ€ν¬λ¦½νΈνμΌμ νμΌ ν κ°λ‘ μ΄λ£¨μ΄μ§ κ²½μ°κ° λ§μλ°μ. μ΄ μ€ν¬λ¦½νΈ νμΌ μμ²΄κ° "νλμ νλ‘κ·Έλ¨" μ΄λ€ 보λ, μμμ μ΄ λ°λ‘ νμνμ§ μμλ€κ³ ν©λλ€.
νμ§λ§, μμλ§ν "CμΈμ΄", "μλ°(Java)" κ°μ νλ‘κ·Έλλ°μΈμ΄λ μ²μ λ§λ€μ΄μ§ λλΆν°, μμ€ νμΌμ μ¬λ¬ κ° μ¬μ©νκΈ° λλ¬Έμ μ¬λ¬ μμ€ νμΌμ ν¨μλ€ μ€μμλ μμν¨μ(main)μ λ°λ‘ μ ν΄ λμ κ²μ
λλ€.
π’ λ§λ¬΄λ¦¬
μ΄λ κ², "νμ΄μ¬" = "μ€ν¬λ¦½νΈμΈμ΄" μ΄κ³ , μ΄λ¬ν μ€ν¬λ¦½νΈμΈμ΄μ νΉμ± λλ¬Έμ, μ μ λ³ΈμΈμ΄ , C,Java κ°μ μΈμ΄λ‘λ§ νλ‘κ·Έλλ°μ νκ³ μμλ€λ©΄, μ€λ μ 리ν, λ΄μ©μ΄ λ―μ λΆλΆμ΄ λΆλͺ
ν μμ κ²μ
λλ€.
μ무 μ΄μ μμ΄, μ²μ νμ΄μ¬μ νλ‘κ·Έλλ°μΈμ΄λ‘ μ¬μ©ν΄μ, μ μκ³ μκ±°λ, μ μ΄μ μ΄λ° μ€ν¬λ¦½νΈμΈμ΄μ νΉμ§μ μ΄λ―Έ μ μκ³ μλ μ¬λμ΄λΌλ©΄, λΉμ°ν μκ³ μλ λ΄μ©μΌ μ μμ§λ§, νλ² μ―€μ, μ 리λ₯Ό ν΄μΌν λ΄μ©μΈ κ² κ°μ΅λλ€.
μ€λ λ΄μ©μ μ μ μκ°μ μ 리νμλ©΄, κ°λ¨νκ²..
- νμ΄μ¬ μ½λλ μμ, νλμ νμ΄μ¬ νμΌ μμμλ, "λ©μλ" λ "ν΄λμ€" λ±μ, μμ κΈ°λ₯μ΄μ¬λ λΆλ¦¬μν€κ³ ,
if __name__ == '__main__' : μ ν΅ν΄μ, νΈμΆν΄μ μ¬μ©νλ λ°©μμ μ½λ ꡬνμ μ§ν₯νμ. - νμ΄μ¬ νλ‘κ·Έλ¨λ μμ, "μ€ν¬λ¦½νΈνμΌμ μ€ννλ λ°©μ"κ³Ό, νμν λͺ¨λμ κΈ°λ₯λ§ κ°μ Έμ μ°λλ‘νλ "λͺ¨λμ import ν΄μ μ¬μ©νλ λ°©μ" μ΄ μλ€λ κ²μ μκ³ , μ΄ λμ μ¬μ©λ²μ μ°¨μ΄λ₯Ό μμ.
μ΄λ κ² λλκ² κ°μ΅λλ€. κ°μ¬ν©λλ€. π