if __name__ == “__main__“을 하는 이유
if name == “main”
1
2
if __name__ == "__main__"
main()
파이썬을 공부하면서 캡슐화를 하다보면(기능 별로 함수를 나눠주다보면) 이런 코드를 사용해주는걸 볼 수 있는데, 내가 옛날에 공부했던 C언어는 굳이 위 코드를 사용하지 않아도 자동으로 메인함수를 실행해주곤했다. 왜 파이썬은 이 구문을 추가해줘야할까?
파이썬은 스크립트 언어
C언어를 공부했을 때 ‘컴파일’과 ‘인터프리터’에 대한 챕터를 공부했던 기억이 난다(중학생 때 였으니까 가물가물하지만) 컴파일compile은 프로그래머가 작성한 코드를 기계어로 번역해 실행하는 언어고, 인터프리터interpreter는 작성한 코드를 한 줄 한 줄 읽어내려가며 바로 실행하는 언어를 뜻한다. 컴파일에서는 소스 코드를 컴파일 하는 과정을 따로 거쳐야 하기 때문에 실행 및 수정에 비교적(인터프리터에 비해) 많은 시간을 요구하지만 인터프리터(스크립트 언어)는 컴파일 없이 결과를 바로 확인하고 수정할 수 있다는 장점이 있다. 하지만 번역과 실행이 동시에 이뤄져 컴파일 언어보다 느린 실행속도를 가지고 있다.
자세한 ‘컴파일과 인터프리터’에 관한 정보는 아래 포스팅을 참고하자.
[CS] 컴파일과 인터프리터의 차이, 장단점 그리고 고급 언어와 저급 언어
파이썬의 동작 방식
일단 실행을 하게 되면 파이썬은 들여쓰기가 되지 않은 모든 코드를 실행하고, 함수와 클래스만 정의하고 실행은 되지 않는다. C와는 다르게 메인 함수같은건 없지만, 메인 모듈은 존재한다. 인터프리터에 무엇을 전달하던 처음 실행하는 소스 파일이 메인 모듈이고, 이 때
1
2
if __name__ == "__main__"
main()
위 코드를 사용하면 모듈이 메인 스크립트로 작동하는지 알아볼 수 있다. 만약 위 모듈이 메인 스크립트로 작동하지 않는다면(import로 작동한다면) 위 main()함수는 실행되지 않는다. 즉
if __name__ == "__main__"
이 코드는 현재 스크립트 파일이 프로그램의 시작점이 맞는지(메인 스크립트로 작동하는지) 판단하는 작업을 위해 필요한 코드이다
댓글남기기