파이썬은 객체지향언어지만, 함수와 클래스가 필수는 아니다. 그래서 파이썬에는 main 함수가 딱히 필요 없다.
간혹 다른 사람들의 코드를 보다보면
1 2 |
if __name__ == "__main__": # 코드 |
이러한 코드를 볼 수 있는데, 이게 무엇인지 알아보았다.
__name__
name은 python 내부변수로 사용된다.
실행되는 파일에서만 name == “main” 값은 참이 되므로 실행 파일에서만 코드가 실행된다.
예제
한 디렉토리 안에 A.py
와 B.py
파일을 생성했다.
A.py
1 2 3 4 5 |
def sum(a,b): return a+b if __name__ == "__main__": print(sum(4,5)) |
실행시키면,
1 2 |
$ python A.py 9 |
이처럼 sum(4,5) 의 결과값인 9 가 출력된다.
B.py
1 2 3 4 |
def sum(a,b): return a+b print(sum(4,5)) |
이번에는 if __name__ == "__main__":
조건문 없이 출력시켜보았다.
1 2 |
$ python B.py 9 |
역시 9가 출력된다.
다음은 A.py 와 B.py 를 import 할 C.py
와 D.py
를 생성한다.
C.py
1 2 3 |
import A print(A.sum(5,6)) |
A.py를 import 하고 5 와 6을 더해보았다.
1 2 |
$ python C.py 11 |
A.py 에 있는 print(sum(4,5)) 은 실행되지 않고
C.py 에 있는 print(A.sum(5,6)) 만 출력되었다.
마지막으로 확인하기 위해, B.py 를 import 한 D.py
를 생성해 보겠다.
D.py
1 2 3 |
import B print(B.sum(5,6)) |
1 2 3 |
$ python D.py 9 11 |
출력해보면 B에 있는 4와5의 합, 그리고 D에 있는 5와6의 합 모두 출력되는 것을 볼 수 있다.
정리
이처럼 if __name__ == "__main__":
의 조건문 뒤의 코드는, 해당 조건문이 있는 파일에서만 실행되고, 다른 파일에 import 했을 시 실행되지 않는다.