파이썬에는 main 함수가 따로 존재하지 않는다.
파이썬으로 개발을 하다보면 if __name__ == '__main__': 으로 시작하는 구문을 만날 수 있는데, 이 구문이 의미하는 것이 현재 파일이 프로그램의 시작점이 맞는지 판단하는 것이다.
# main.py
def main():
print('This is Main Function')
if __name__ == '__main__':
main()
# 실행 결과
# $ python main.py
# $ This is Main Function
위와 같이 사용할 수 있다.
파이썬에서 Main함수는 이렇게 사용하는구나~ 하고 넘어갈수도 있지만 조금 더 자세히 알아보자.
# addition_module.py
def add(a, b):
return a + b
# 터미널에서 module을 직접 import하여 사용
>>> import addition_module.py
>>> print(addition_module.add(1, 2))
3
위와 같이 간단히 덧셈 결과를 반환하는 addition_module이 있고, 터미널에서 모듈을 직접 import하여 사용해보면 기대한 결과 값인 3이 출력되는것을 확인할 수 있다.
만약 addition_module.py 파일에 print문을 추가하면 어떻게 될까?
# addition_module.py
def add(a, b):
return a + b
print(add(2, 6))
>>> import addition_module.py
8
위와 같이 터미널에서 import만 했을 뿐인데 코드가 수행되어 결과값을 출력하는 것을 볼 수 있다. 문제를 해결하기 위하여 다음과 같이 수정하면 import를 하여도 print 함수가 수행되지 않게 할 수 있다.
# addition_module.py
def add(a, b):
return a + b
if __name__ == '__main__':
print(add(2, 6))
>>> import addition_module.py
파이썬에서의 __name__ 변수는 내부적으로 사용되는 특별한 변수이다.
import로 모듈을 가져올 때는 __name__에 모듈의 이름이 저장(위의 예제에서는 addition_module)되고, import가 아니라 모듈을 직접 실행시킬때는 __name__안에 __main__이라는 값이 저장된다.
따라서, if __name__ == '__main__': 조건문을 사용하여 직접 호출되어 사용될 때는 그 자체로의 기능을 수행하고, 동시에 다른 모듈에서 필요한 함수 등을 제공할 수도 있다.
파이썬은 main 함수가 없는 대신 if __name__ == '__main__': 코드로 main 함수의 역할을 대신 할 수 있다.
'🐍Python | Django' 카테고리의 다른 글
[Python] call by value? call by reference? (0) | 2022.04.28 |
---|---|
[Python] 메타클래스(MetaClass) (0) | 2022.04.27 |
[Python] Class와 상속(Inheritance) (0) | 2022.04.19 |
[Python] Decorator (0) | 2022.04.18 |
[Python] Under Score(_)? (0) | 2022.04.14 |