읽어보고 내용 추가할 것
_single_leading_underscore
: 주로 한 모듈 내부에서만 사용하는 private 클래스/함수/변수/메서드를 선언할 때 사용하는 컨벤션이다. 이 컨벤션으로 선언하게 되면 from module import *
시 _로 시작하는 것들은 모두 임포트에서 무시된다. 그러나, 파이썬은 진정한 의미의 private을 지원하고 있지는 않기 때문에 private을 완전히 강제할 수는 없다. 즉, 위와 같은 임포트문에서는 무시되지만 직접 가져다 쓰거나 호출을 할 경우엔 사용이 가능하다. 그래서 “weak internal use indicator"라고 부르기도 한다.
_internal_name = 'one_module' # private 변수
_internal_version = '1.0' # private 변수
class _Base: # private 클래스 _hidden_factor = 2 # private 변수
def __init__(self, price):
self._price = price
def _double_price(self): # private 메서드
return self._price * self._hidden_factor
def get_double_price(self):
return self._double_price()
__mro__
Method Resolution Order의 약자. 직역하면 메소드 결정 순서.
메소드 실행순서를 정해주어 죽음의 다이아몬드(the Deadly Diamond of Death) 문제를 해결해준다.
<class 이름>.__mro__
라고 입력하면, 메소드 실행순서를 튜플에 담아 리턴한다.
참고
from collections import Counter
Counter(<string>)
: string에 사용된 문자를 카운트하여 딕셔너리로 저장(정확히는 딕셔너리의 확장 클래스인 Counter로 저장)Counter(<string>).most_common(k)
: 가장 많이 쓰인 문자를 k개까지 리턴참고
https://www.daleseo.com/python-collections-counter/
메서드에는 인스턴스 메서드, 클래스 메서드, 정적 메서드가 있다.
self
매개변수를 통해 인스턴스 필드에 접근한다.cls
매개변수를 통해 클래스 필드에 접근한다.@classmethod
를 사용한다.@staticmethod
를 사용한다.참고
https://frenchkebab.tistory.com/56
setdefault()
dict.setdefault(key, default_val)
딕셔너리에서 key
에 해당하는 값이 존재하면 그 값을 리턴, 없다면 default_val
으로 설정한 뒤 그 값을 리턴.
eval()
실행 가능한 문자열을 입력받아 계산한 결과를 리턴한다.
단, 수식 뿐 아니라 파이썬 스크립트를 포함한 파이썬에서 실행가능한 모든 문자열을 실행한다. 예를 들어 os모듈을 통해 local 자원을 삭제하거나 수정하려는 문자열까지 모두 실행해버리므로 주의가 필요하다.
discard()
set.discard(val)
딕셔너리에서 val
을 KeyError
없이 삭제한다.
반면, remove()
은 KeyError
를 일으킨다.
s = {1, 2, 3, 4, 5}
x = next(iter(s))
print(x)
Django의 TestCase는 파이썬의 unittest.TestCase를 상속받는다. DRF의 APITestCase는 Django의 TestCase를 상속받는다. 그래서 DRF를 공부하고 사용하는 나에겐 unittest가 중요하다.
setUp()
zip
아래 링크 참조
INDEX_ERROR
가 없다text = "abc"
# INDEX_ERROR
text[3]
# ! INDEX_ERROR
text[2:100] # 결과값 : "c"
text[100:200] # 결과값 : ""
itertools.permutations(iterable, r=None)
itertools.combinations(iterable, r)