티스토리 뷰

Python

[Python] 언더바 (_) 사용하기

Gom Guard 2017. 12. 31. 11:14
반응형


파이썬의 언더바 

  • 파이썬에선 (_) 를 사용하는 경우들이 있습니다.

    • 1. 인터프리터에서 마지막 값을 저장하고 싶을 때

    • 2. 값을 무시하고 싶을 때

    • 3. 변수나 함수명에 특별한 의미를 부여하고 싶을 때

    • 4. 숫자 리터럴 값의 자릿수 구분을 위한 구분자로써 사용할 때

1번 사용방법 

  • 1 번째로 언더바는 인터프리터에서 마지막 값을 저장하고 싶을 때 사용되곤 합니다.


  • 10을 입력하고 나면 _ 에는 10 이 입력되어 있습니다. 그래서 _ * 3이 30이 출력되는 것 입니다. 이후에 _ 에는 30이 저장되어 있고 _/30 을 실행하면 1.0 이 출력됩니다.


2 번 사용방법 

  • 2 번째로는 값을 무시하고 싶을 때 사용할 수 있습니다.


  • x,_,y = 1,2,3 일 경우 x 에는 1, y 에는 3 이 저장되는 것을 알 수 있습니다. 여러개의 값을 무시하고 싶은 경우에는 x,*_,y 처럼 _ 앞에 * 를 사용하면 됩니다. 또한 값을 무시하는 _ 는 index 가 필요없는 for loop 문을 작성할 경우에 사용할 수 있습니다.

for _ in range(10):
    print('test')

  • 단순히 print 하는 반복문의 경우에는 index 가 의미 없습니다. 이럴 경우에 _ 를 index 로 사용할 수 있습니다.

3 번 사용방법 

  • 3 번째로는 어떤 것에 특별한 의미를 부여하고 싶을 때 사용할 수 있습니다. 파이썬에서 특별한 의미를 부여할 수 있는 부분들은 폴더와 메소드 속성 으로 총 3가지가 있습니다. 

    • 1. 폴더

      • 폴더안에 __init__.py 라는 파일이 있으면 그 폴더를 패키지로 만들 수 있습니다.

    • 2. 메소드

      • '_' 가 앞에 붙으면 외부 사용자는 사용하지 말라는 권유의 문법입니다. 외부에서 이 모듈, 클래스를 import 할 경우 from module import * 같이 전체를 불러오는 import 를 하면 '_' 가 앞에 붙어있는 변수나 메소드들은 호출되지 않습니다. 하자만 직접 '_' 가 붙은 변수나 메소드를 호출한다면 사용이 가능하기 때문에 권유의 문법이라고 불립니다.

      • '__' 언더바가 붙은 메소드는 2가지 종류로 나누어집니다. 기본적으로 제공하는 매직 메소드들이거나 맹글링을 위한 메소드 입니다.

      • 매직 메소드들을 먼저 살펴보면, 클래스를 작성할 때 사용하는 __init__ , __str__ 등의 메소드들을 의미합니다. 매직 메소드들의 종류를 살펴보고 싶으시다면 이 페이지에서 참고하실 수 있습니다.

      • 맹글링이란 컴파일러나 인터프리터가 변수나 함수명을 일정한 규칙에 의해 변형시키는 것을 의미합니다. 메소드의 맹글링 규칙은 메소드 앞에 _ClassName 을 붙이는 것으로 맹글링 됩니다.

class A:
    def __double_method(self):
        pass
class B(A):
    def __double_method(self):
        pass
print(dir(A()))
print(dir(B()))

      • 같은 이름의 메소드일 경우에 '__' 를 앞에 붙여주면 자동으로 맹글링 되는 것을 알 수 있습니다.
    • 3. 속성
      • 변수(속성) 앞에 '_' 를 붙이면 메소드 앞에 '_' 를 붙이는 것과 같이 import * 에서 제외되는 것이 가능합니다. 하지만 변수의 경우도 직접 접근하면 접근 가능하니 완전한 private 속성을 갖는 것은 아닙니다.

4 번 사용방법 

  • 숫자 또는 문자값의 자릿수 구분을 위한 구분자로써 '_' 가 사용 가능합니다.

dec_base = 1_000_000
dec_add = 11_000
print(dec_base)
print(dec_add)
print(dec_base + dec_add)


  • 작성할 경우에는 _ 를 사용하여 자리 수를 구분하였지만 출력이나 연산시에는 일반 숫자 리터럴과 동일하게 처리됩니다.






부족한 블로그에 방문해 주셔서 감사합니다.

잘못된 부분이나 질문이 있으시면 

댓글로 말씀해주세요.


금방 확인하고 피드백 드리겠습니다.


좋은 하루 되세요. ^^


반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함