[파이썬] if __name__ == '__main__':

InAnarchy·2023년 4월 17일
0

Python

목록 보기
13/14
post-thumbnail

파이썬 파일이 실행되는 방식

파이썬 파일은 메인으로 실행되거나, 임포트되어 실행된다.

c,java와 같은 프로그래밍 언어에는 메인함수라는 개념이 있다.(프로그램을 시작할 때 처음 실행하는 함수) 그런데 파이썬에는 메인함수가 존재하지 않는다.

그래서 파이썬에서는 다음과 같은 코드를 사용하는데 이는 파이썬 스크립트가 직접 실행될 때만 실행되는 코드 블록을 정의하는 것이다.

if __name__ == '__main__':
    코드

name

  • 모듈의 이름이 저장되는 변수
  • import로 모듈을 가져왔을 때 모듈의 이름이 들어감
  • 파이썬 인터프리터가 최초로 실행한 스크립트 파일의 __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 안의 코드가 실행되고

  1. hello.py의 __name__변수에는 'hello'가 들어가고

  2. main.py의 __name__ 변수에는 __main__이 들어간다.

그렇다면 hello.py를 실행하면?

hello 모듈 시작
hello.py __name__: __main__
hello 모듈 끝

'hello'가 아니라 __main__이 들어간다.
파이썬 인터프리터가 최초로 실행한 스크립트 파일의 __name__ 에는 __main__ 이 들어간다.
이는 프로그램의 시작점이라는 뜻이다.

if name == 'main':

  • __name__변수의 값이 __main__인지 확인
  • 현재 스크립트 파일이 프로그램의 시작점이 맞는지 판단하는 것
  • 다른 스크립트에서 import될 때에는 실행되지 않음
#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
코딩도장

profile
github blog 쓰다가 관리하기 귀찮아서 돌아왔다

0개의 댓글