Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
  Python에서의 "_" Underscore 왜 쓰는거지? 
작성일시 : 2020. 4. 18. 10:48 | 분류 : Development/Python

주요 사용 용례

  • 인터프린터에서의 활용: 인터프린터에서는 "_"은 가장 나중에 실행된 명령의 결과를 의미
  • 이름으로써 활용: 임시적인 Throw-away 이름으로 활용하며, 예를 들어 특정 이름을 특정할 의미가 없는 경우에 활용 예를 들어 과거 For 루프에서 활용했던 i 와 같은 의미로 "_"를 활용 할 수 있음
for _ in range(10):
	print ("Hi 10 times")

 

  • Django: Translation lookup 함수을 위한 축약형으로 활용할 수 있으며, 혼동을 피하기 위하여 "_"를 잦은 활용은 피하는게 좋음
    참고: https://docs.djangoproject.com/en/dev/topics/i18n/translation/
  • 이름 앞에 "_" 활용 (예: _variable): "_"로 시작하는 함수 또는 변수는 Private이라는 의미를 갖고 있음, 예를 들어 from <module> import * 을 통해 모듈을 로딩하는 경우 "_"로 시작하는 요소들은 import 되지 않음. 이 경우 __all__ 을 이용하면 명시적으로 로딩 가능
A name prefixed with an underscore (e.g. _spam) should be treated as a non-public part of the API (whether it is a function, a method or a data member). It should be considered an implementation detail and subject to change without notice.

 

  • 이름 앞에 "__" 활용 (예: __variable): 이름 앞에 두개의 "__"를 쓰는 경우 특히 함수명앞에서 사용하는 경우 자식 클래스의 함수 명과의 충돌을 피하기 위해서 활용. 
    • 이름앞에 "__"이 사용되는 경우 이는 _classname__method_name 으로 치환
    • 이름앞에 "_"이 사용되는 경우 이는 _method_name으로 치환
class Super():
	def __method_a(self):
    	pass

class Child(Super):
	def __method_a(self):
    	pass
        
##########################
# 실제 이름: _Super__method_a,
# 실제 이름: _Child__method_a

 

  • 이름뒤에 "__" 활용 (예: __init__): 파이썬에서 특별한 이름을 갖는 메소드들에 대하여 사용하는 이름 명명 규칙.
    • 사용자 함수와의 이름 충돌을 피하기 위하여 사용
    • Override 가능

원글 출처: https://shahriar.svbtle.com/underscores-in-python

 

|