잘 정리해보자
__name__ 사용 본문
1. if __name__ == '__main__' : 로 사용되는 경우
현재 실행되는 부분을 구분할 때 사용
nametest.py
def test1() :
if __name__ == '__main__' :
print('__name__ = __main__')
return 'test function'
def test2() :
print(__name__)
return '__name__ test!!'
//호출
test1()
test2()
> nametest.py 안에서 test1호출 한 경우 :
실행결과 :
__name__ = __main__
Out[22]: 'test function'
> nametest.py 안에서 test2호출 한 경우 :
실행결과 :
__main__
Out[23]: '__name__ test!!'
함수를 호출한 장소가 함수를 선언한 곳과 일치하는 경우, __name__ 값은 __main__이 된다.
다른파일에서 nametest.py 파일 import
importtest.py
import nametest
a = nametest.test1()
print(a)
b = nametest.test2()
print(b)
print(__name__)
실행결과 :
test function -> print(a)
nametest -> .test2()의 print(__name__)
__name__ test!! -> print(b)
__main__ -> print(__name__)
nametest.py 를 import하고 nametest 함수를 호출하면,
.test2() 의 __name__은 자신의 파일 이름인 nametest 를 출력한다.
마찬가지로 importtest.py에서 __name__ 을 출력하면 자신의 파일에서 호출함으로, __main__이 출력된다.
정리
> __name__은 실행되고 있는 현재 파일의 위치를 나타낸다.
> __nam__의 출력이 __main__ 이면 현재 실행되고 있는 파일을 뜻하며, 출력이 파일이름 (ex : nametest) 인 경우, import 되어서 호출되고 있으며 __name__을 출력한 현재 파일을 뜻한다.
> .py로 만들어진 파일에서
if __name__ == '__main__' : 을 사용하면, .py 파일 안에서만 동작하고
.py 파일을 import 한 곳에서는 __name__이 main이 아니라서 동작을 안한다.
2. 파라미터함수.__name__ 으로 사용하는 경우
파라미터 함수(함수에서 파라미터로 함수를 건내는 경우) 에서 함수의 이름을 출력한다.
def test1(fn) :
print(fn.__name__ , ' loading..')
print(fn())
def test_fn1() :
return 'test!!!'
test1(test_fn1)
실행결과 :
test_fn1 loading..
test!!!
'Python' 카테고리의 다른 글
python - 코딩테스트 요인 (0) | 2021.04.13 |
---|---|
가변인수 (*, **) (0) | 2021.04.11 |
collections.deque (0) | 2019.09.26 |
sys.stdin.readline (0) | 2019.09.25 |