◽ Python

[Python] __name__ 의미는 무엇일까?


__name__

  메인을 자바로 썼던 개발자가 파이썬을 처음 세팅했을 때, 생소한 __name__ 얘는 뭘까?라는 궁금증으로 정리해 봤고, 이와 비슷한 수준의 의문점들을 이 글에 간략하게 정리하려고 한다.


 

1. "__name__"은 무엇일까? 

  자바에 비유하자면, main 함수다. __name__은 파이썬에서 내장된 특별한 변수로, 모듈의 이름을 저장하는 데 사용되는 것이 가장 기본적인 정의이다. 파이썬에서 __name__은 특별한 속성으로, 현재 모듈의 이름을 나타내는 문자열을 담겨있다고 할 수 있는데, 모듈이 어디에서 import 되었는지에 따라 그 값을 달리할 수 있다.  

아래의 코드를 보면, "This is the main program."와 "This is a function in example module."이 출력되는데, 

1
2
3
4
5
6
7
8
9
10
# example.py
 
def foo():
    print("This is a function in example module.")
 
if __name__ == "__main__":
    print("This is the main program.")
    foo()
else:
    print("This module was imported.")
cs

 

이 아래의 코드는 "This module was imported."와 "This is a function in example module."이 출력된다.

1
2
3
4
5
6
# another_module.py
 
import example
 
print("Importing example module.")
example.foo()
cs

 

  위의 설명을 더 간단히 요약하자면, __name__은 모듈의 이름을 저장하는 특별한 변수인데, python example.py와 같이 직접 실행이 되면 name에는 모듈 이름이 __main__으로 매핑이 되고, import 형식으로 사용하면 __name__에 example이 매핑되는 것으로 보면 된다.

 

 

 

 

2. 매직 메소드 "__"

 위 에서 소개한 __name__에 이중 언더바가 있다고해서 매직 메소드로 착각 할 수 있는데, 전혀 다른 개념이고 아래에 주로 볼 수 있는 매직 메소드를 간단히 정리했다.

  • __init__(self, ...) : 객체가 생성될 때 호출되는 생성자 메서드.
  • __str__(self): 객체를 문자열로 표현할 때 호출되는 메서드, print(obj)를 호출할 때 출력되는 문자열을 반환.
  • __len__(self): 객체의 길이를 반환하는 메서드. len(obj)를 호출할 때 반환값으로 사용.
  • __add__(self, other): 두 개의 객체를 더하는 메서드. obj1 + obj2를 호출할 때 사용.
  • __getitem__(self, key): 객체의 인덱스나 키를 사용하여 요소에 접근하는 메서드, obj[key]를 호출할 때 사용.

 

 


 

 

푸터바