읽어보고 내용 추가할 것
_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 CounterCounter(<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)