티스토리 뷰
파이썬의 언더바
파이썬에선 (_) 를 사용하는 경우들이 있습니다.
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):passclass B(A):def __double_method(self):passprint(dir(A()))print(dir(B()))
- 같은 이름의 메소드일 경우에 '__' 를 앞에 붙여주면 자동으로 맹글링 되는 것을 알 수 있습니다.
- 3. 속성
- 변수(속성) 앞에 '_' 를 붙이면 메소드 앞에 '_' 를 붙이는 것과 같이 import * 에서 제외되는 것이 가능합니다. 하지만 변수의 경우도 직접 접근하면 접근 가능하니 완전한 private 속성을 갖는 것은 아닙니다.
4 번 사용방법
숫자 또는 문자값의 자릿수 구분을 위한 구분자로써 '_' 가 사용 가능합니다.
dec_base = 1_000_000dec_add = 11_000print(dec_base)print(dec_add)print(dec_base + dec_add)
작성할 경우에는 _ 를 사용하여 자리 수를 구분하였지만 출력이나 연산시에는 일반 숫자 리터럴과 동일하게 처리됩니다.
부족한 블로그에 방문해 주셔서 감사합니다.
잘못된 부분이나 질문이 있으시면
댓글로 말씀해주세요.
금방 확인하고 피드백 드리겠습니다.
좋은 하루 되세요. ^^
'Python' 카테고리의 다른 글
[Python] list 합을 구하기 - 1차원, 다차원 리스트 (4) | 2018.01.05 |
---|---|
[Python] Dictonary 관련 함수 - setdefault, defaultdict, counter (0) | 2018.01.01 |
[Python] 이름없는 함수 - lambda, map, filter (0) | 2017.12.30 |
[Python] 예외처리 - try, except, else, finally (7) | 2017.12.28 |
[Python] 폴더와 그 내부 파일들까지 백업하기 (작성중) (0) | 2017.12.28 |
- Total
- Today
- Yesterday
- 파이썬
- Koreancuisine
- SeoulTravel
- 커플여행
- 머신러닝
- 백준
- 알고리즘
- 카카오
- 가족캠핑
- 강원도여행
- python
- sql
- Oracle
- 여름휴가추천
- 글램핑
- 영월캠핑
- 여름휴가
- 가족여행
- 강원도캠핑
- 캠핑초보
- 반려견캠핑
- 캠핑장추천
- 가평여행
- 자연힐링
- bukhansannationalpark
- 계곡캠핑
- 가평캠핑
- 서울근교캠핑
- 영월여행
- 여름캠핑
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |