글을 시작하며

이번 부스트캠프에서 처음으로 배운 개념입니다.

이전에는 단순히 for문에서 사용하지 않는 부분에서 _를 사용했는데 이런 부분을 알게 돼서 조금 더 자세히 공부하려고 합니다.

 

먼저 참고 자료로 아래 2개의 사이트를 참고했습니다. 더 자세히 확인하시고 싶으면 링크를 확인해주세요.

 

What is the meaning of single and double underscore before an object name?

Can someone please explain the exact meaning of having leading underscores before an object's name in Python, and the difference between both? Also, does that meaning stay the same whether the obj...

stackoverflow.com

 

 

파이썬에서 언더바/언더스코어(_) 의 의미와 역할

https://www.datacamp.com/community/tutorials/role-underscore-python Role of Underscore(_) in Python In this tutorial, you're going to learn about the uses of underscore(_) in python. www.datacamp.co..

eine.tistory.com

 

언더스코어(_)의 사용 용도로 4가지가 있습니다.

  1. 인터프리터에서 마지막 값 저장
  2. 무시하는 값
  3. 숫자값의 분리(자릿수 구분, 구분자)
  4. 변수나 함수명에 특별한 의미 또는 기능을 부여할 때

 

1. 인터프리터에서 마지막 값 저장

파이썬 인터프리터에서는 마지막 표현식의 결과값을 자동적으로 "_"라는 변수에 저장합니다.

 

 

2. 무시하는 값.

_는 무시하는 값으로도 쓰입니다. 해당 값을 unpack하기 싫으면, 해당 위치에 _를 넣으면 됩니다.

 

 

이는 for문에서도 사용할 수 있습니다.

 

 

3. 숫자값의 분리(자릿수 구분, 구분자)

 

숫자값이 길다면, 자릿수 구분을 위해 _를 중간에 넣어줄 수 있습니다.

 

 

4. 변수나 함수명에 특별한 의미 또는 기능을 부여할 때

 

변수, 함수, 클래스 명 등에 언더스코어(언더바)가 사용될 수 있습니다.

종류로는 4가지가 있습니다.

 

4-1. 앞에 하나의 언더스코어 _variable

 

앞에 하나의 언더스코어로 시작하는 이름은 내부 사용용도입니다.(internal use only)

 

위의 그림처럼 클래스내의 변수를 호출하면 접근이 가능합니다.

하지만 해당 모듈을 import 해서 사용하는 경우 다음과 같이 됩니다.

 

 

위에서 나오는 에러처럼 _Test2는 import가 안되는 것을 확인할 수 있습니다.

위와 같은 상황을 다르게 from underscore import * -> import underscore로 변경해보자

 

 

이처럼 _ 1개는 내부사용 전용이라는 뜻입니다.

 

4-2. 뒤의 하나의 언더스코어

 

가끔 파이썬 키워드에 해당하는 이름(예약어)을 변수명, 함수명, 클래스명으로 사용하고 싶은 경우 사용하면 됩니다.

 

 

위에서 보이는 것처럼 sum은 list, tuple의 값을 더하는 함수입니다.

sum을 변수로 사용한다면 꼬이게 되서 오류가 발생합니다.

이러한 상황을 피하기 위해 변수명을 sum 대신 sum_을 사용하면 됩니다.

 

 

4-3 앞의 두개의 언더스코어

 

앞에 두개의 언더바로 시작하는 방식으로 name mangling이라고도 한다. 

아래를 통해 확인해보자

 

 

dir 함수를 통해 보면 obj안에 함수와 변수에 __list가 없는 것을 확인할 수 있다. 이처럼 언더스코어 2개로 시작하는 것은 pivate access modifier(접근 지정자)의 역할을 한다. 변수뿐만 아니라 메소드에서도 사용 가능하다.

 

그러면 어떻게 접근하는지 확인해보자.

 

 

mangling된 변수에 접근하려면 위와 같이 함수를 사용하여 접근을 해야한다.

 

추가적으로 mangling된 변수에 값을 직접 추가하는 방식은 property 데코레이터를 사용하면 가능하다.

 

 

4-4 앞뒤로 2개의 언더스코어

이것은 특수한 예약 함수나 변수, 그리고 함수명으로 매직 메소드(magic method) 또는 dunder 메소드라고 불립니다.

대표적으로 __init__, __add__, __len__, __main__ 등이 있다.

참고 자료는 아래 링크에서 확인하면 됩니다.

 

 

Dunder or magic methods in Python - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

 

+ Recent posts