잘 정리해보자

__name__ 사용 본문

Python

__name__ 사용

토마토오이 2021. 4. 13. 11:25

 

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
Comments