🐍Python | Django

[Python] main 함수

이줭 2022. 4. 26. 20:44
728x90

파이썬에는 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 함수의 역할을 대신 할 수 있다.

728x90

'🐍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