[Python] name & main
__name__
def main():
print('file name: who_are_you.py')
print('__name__: {0}'.format(__name__))
main()
file name: Who_are_you.py
__name__:__main__
파이썬 스크립트 파일을 실행하면 자동으로 생성되는 변수로 __name__이라는 것이 있다. 위 코드를 보면 변수 __name__이 만들어졌고 거기에 문자열 ‘__main__‘이 담겨있다.
import who_are_you
print('play importer')
print('__name__: {0}'.format(__name__))
file name: who_are_you.py
__name__: who_are_you
play importer
__name__:__main__
파이썬은 파일별로 각각 변수 __name__을 만든다. 위 코드에서 알 수 있는 사실은 실행이 시작되는 스크립트 파일의 __name__에는 문자열 ‘__main__‘을 채운다. import 되는 스크립트 파일의 __name__에는 파일 이름을 문자열로 채운다.
이러한 특징을 바탕으로 하나의 스크립트 파일을 두가지 목적으로 사용할 수 있다.
if __name__ == ‘__main__’
파이썬 스크립트 파일에 담기는 내용은 두가지로 나눌 수 있다.
- 직접 실행할 내용이거나
- 다른 스크립트 파일에서 사용하도록 만든 내용이거나
def add(n1, n2):
return n1 + n2
def main(): # 이 파일을 import 하면 main함수도 정의됨
print(add(3, 4))
print(add(5, 9))
main() # 이 파일을 import 하면 이문장에 의해 main함수도 실행
7
14
만약 위 파일을 import 했다면 add 함수를 가져다 쓰는 것이 목적일 텐데 의도치 않게 main 함수가 실행된다. 결국은 필요하다면 다른 파일에서 이 파일을 import해서 add 함수를 호출할 수 있게 만들고, 이 파일을 직접 실행해서 main함수가 호출되도록 해야한다.
def add(n1, n2):
return n1 + n2
if __name__ == '__main__':
def main(): # if 조건이 True인 경우에만 main 함수 정의
print(add(3, 4))
print(add(5, 9))
main() # if 조건이 True인 경우에만 main 함수 호출
7
14
import adder2 as ad
def divide(n1, n2):
return n1 / n2
def main():
print(divide(4, 2))
print(divide(9, 3))
print(ad.add(2, 3))
main()
2.0
3.0
5
위 코드처럼 작성하면 adder2.py의 main함수정의와 호출은 실행되지 않으니 가져다 쓰는데 전혀 문제가 없다.