프로그래밍 언어/python

_var, var_, _var_, __var__과 같이 선언된 변수의 의미를 설명

이현찬 2022. 7. 26. 21:49
728x90

2021-04-02 수정 dunder method 예제 추가*

이 글은 슬기로운 파이썬 트릭의 내용에 기반해 작성한 글입니다.

2.4 밑줄 문자와 던더

  • 파이썬에서 변수명에 밑줄을 추가하는 경우가 있는데 각각은 의미를 가진다.

_var

  • 변수 앞에 하나의 _를 붙이는건 method 내부에서만 쓰일 것이라는 의도를 알리는 목적
  • 이 방식으로는 해당 변수에 접근하는 것을 방해하지는 않음
  • 그러나 from module import *와 같은 와일드 카드 임포트방식으로 모듈을 불러오는 경우에 _가 앞에 붙은 것은 모두 가져오지 않음

var_

  • 이 경우에는 python에서 변수로 사용할 수 없는 이름으로 선언하고 싶은 경우에 사용
  • 예를 들면, class나 int는 파이썬의 키워드로 사용하고 있기 때문에 사용할 수 없지만 사용하고자 할 때 class나 int와 같이 선언해 충돌을 방지
  • 이 방법도 관례적인 방법으로 프로그램에 다른 영향을 주지 않음

__var

  • 변수 앞에 _를 두개 붙이면 실수로 수정되지 않도록 name mangling이라고 하는 과정이 진행됨
  • name mangling이란 클래스 내에서 변수명이 바뀌는 것을 의미한다.
  • __var는 실수로 수정되는 것을 막기위해 name mangling을 수행할 변수에 해당함
  • 변수 뿐만 아니라 method에도 적용이 됨

__var__

  • 앞과 뒤에 모두 __가 붙으면 던더 메소드라고 함
  • 던더는 double underscore를 줄여 부르는 말
  • var는 파이썬에서 특수용도로 예약이 되어있고, 버전이 바뀌면서 수정될 수 있기 때문에, 충돌을 막기 위해 이런 방식을 쓰지 않는 것이 좋음
  • 아래의 예에서 class내에 __add__ method는 dundeer_example 클래스로 + 연산을 하게되면 __add__가 호출됨
  • python의 dunder method를 잘 정리한 블로그1를 참고

_ (underscore)

  • 관례로 변수가 임시적이거나 중요하지 않음을 나타냄
  • 반복문에서 인덱스에 접근할 필요가 없을 때 임시적인 값임을 표현하기 위해
  • 여러 output을 반환하는 함수나 튜플을 unpacking할 때 임시 변수로 사용

마무리

  • 어렴풋이 알고있던 내용을 정리할 수 있는 기회였음
  • _ 하나로 임시값을 코딩하는 것은 간단하게 코드를 깔끔하게 해줄 수 있는 방법인 것 같음

Reference

[1] Python Dunder Methods- A guide to use Python magic methods