파이썬 파일은 메인으로 실행되거나, 임포트되어 실행된다.
c,java와 같은 프로그래밍 언어에는 메인함수라는 개념이 있다.(프로그램을 시작할 때 처음 실행하는 함수) 그런데 파이썬에는 메인함수가 존재하지 않는다.
그래서 파이썬에서는 다음과 같은 코드를 사용하는데 이는 파이썬 스크립트가 직접 실행될 때만 실행되는 코드 블록을 정의하는 것이다.
if __name__ == '__main__':
코드
__name__
에는 __main__
이 들어감The
__name__
attribute must be set to the fully qualified name of the module. This name is used to uniquely identify the module in the import system.
한 디렉터리 내에 파일 두개를 만들어보자.
#hello.py
print('hello 모듈 시작')
print('hello.py __name__:', __name__) # __name__ 변수 출력
print('hello 모듈 끝')
#main.py
import hello # hello 모듈을 가져옴
print('main.py __name__:', __name__) # __name__ 변수 출력
main.py 파일을 실행해보자.
import로 모듈을 가져오면 해당 스크립트 파일이 한 번 실행된다.
즉 main.py를 실행하면
1. hello 모듈을 가져오면서 hello.py 안의 코드가 실행되고
hello.py의 __name__
변수에는 'hello'가 들어가고
main.py의 __name__
변수에는 __main__
이 들어간다.
그렇다면 hello.py를 실행하면?
hello 모듈 시작
hello.py __name__: __main__
hello 모듈 끝
'hello'가 아니라 __main__
이 들어간다.
파이썬 인터프리터가 최초로 실행한 스크립트 파일의 __name__
에는 __main__
이 들어간다.
이는 프로그램의 시작점이라는 뜻이다.
__name__
변수의 값이 __main__
인지 확인#example.py
def main_function():
print("이 함수는 스크립트가 직접 실행될 때만 호출됩니다.")
def another_function():
print("이 함수는 언제든지 호출할 수 있습니다.")
if __name__ == '__main__':
main_function()
이 함수는 스크립트가 직접 실행될 때만 호출됩니다.
이 때 직접 실행될 때에 main_function()이 실행된다.
이제 다른 파일에 example 모듈을 임포트해서 사용해보자.
#main.py
import example
example.another_function()
이 함수는 언제든지 호출할 수 있습니다.
main파일을 실행할 때에는 임포트한 example 파일의 조건절이 실행되지 않는다.
결론:
if __name__=='__main__':
조건문에서는
해당 스크립트 파일에서 직접 실행시켰을 때만 실행할 코드들을 넣어주면 되겠다.
REFERENCE
코딩도장