본문 바로가기
개발일지/Python

파이썬 [전역변수]모듈 __name__, __main__ 류 import 설명

by 개발에정착하고싶다 2022. 5. 3.
320x100
# __name__은 입력해주었을때 만약 입력한 페이지에서 출력하게 되면
# __main__으로 나오게 된다.
# 하지만 만약 내가 입력한 파일이 a인데, 실행을 b에서 import로 끌어와서
# 출력하게 되면 b파일에서
# __a파일명__
# 내가 import해서 쓰고싶은것. 이런식으로 출력된다.
# 이것은 메인으로 실행되는 파일을 구분하기위해서 써주는 일종의 신호이며
# 이를 보다 깔끔하게 처리하기 위해서는
# if __name__ == '__main__':
#    print(f'__name__: {__name__}')
# 으로 써준다.
# 위의 것으로 크게 2가지 기능성을 기해볼수있는데
# 첫번째로는 __main__이 아닐때 자동 표시생략이 되는것이며
# 두번째로는 해당 if문 안에 출력문등을 집어넣게 되면 if문에 해당되는
# 내용일때만 출력이 된다는 점이다.

첫번째 파일

addModule

 

def add(n1, n2):
    return n1 + n2

print(f'__name__: {__name__}')

 

두번째파일

subModule

def sub(n1, n2):
    return n1 - n2

print(f'__name__: {__name__}')

세번째 파일

mulModule

 

def mul(n1, n2):
    return n1 * n2

print(f'__name__: {__name__}')

네번째 파일

divModule

 

def div(n1, n2):
    return n1 / n2

print(f'__name__: {__name__}')

 

다섯번째 파일

Module

 

import addModule
import subModule
import mulModule
import divModule

print(addModule.add(10,20))
print(subModule.sub(10,20))
print(mulModule.mul(10,20))
print(divModule.div(10,20))

 

만약 위와같은 상태에서 출력하게 되면

 

__name__: addModule
__name__: subModule
__name__: mulModule
__name__: divModule
30
-10
200
0.5

Process finished with exit code 0

 

이렇게 출력된다.

 

하지만 메인출력모듈로 사용중인 Module을 제외한

import용으로 사용중인 다른 파일에서

 

기존의

print(f'__name__: {__name__}')

이게 아닌

 

if __name__ == '__main__':
    print(f'__name__: {__name__}')

로 변경해주게되면

똑같이 Module을 메인으로 두고 출력했을때

 

30
-10
200
0.5

이렇게 출력된다.

300x250