exception이 발생하였을 때, 재시도를 r회 하는 로직은 생각보다 많이 쓰이게 됩니다. 어떻게 하는지 간단하게 알아보겠습니다. 예제를 하나 보겠습니다. 위 예제는 t = 1/0을 10번 재시도 하는 예제입니다. 보시면, t = 1 / 0 부분에서 계속 ZeroDivisionError가 뜨게 됩니다. 이 때, r이 retry보다 작으면 continue를 하고, 그렇지 않으면 raise를 하게끔 하였습니다. retry는 재시도 횟수인데요. 1부터 retry회까지 카운트가 됩니다. 고로, r이 retry보다 작다면 continue문을 타고, retry번 이상 재시도를 했다면 raise, 그러니까 예외를 발생시켜버리게 됩니다. 10번 재시도를 하고, ZeroDivisionError가 뜨게 됩니다. 저 코드..
파이썬 검색 결과
불변 객체는 생각보다 중요합니다. 예를 들자면, 해시에서 키를 넣을 때, 변할 수 있는 객체면 곤란해 질 수 있습니다. 왜냐하면 객체의 내용이 변하면 hash값이 변하기 때문입니다. 하지만, hash에서 탐색하기 시작하는 위치는 안 바뀌기 때문에 (재해싱을 하지 않는 이상) 이상하게 동작하게 됩니다. python에서는 immutable을 흉내낼 수 있는 것이 있는데요. dataclasses의 frozen을 True로 설정하면 가능합니다. 간단하게 알아보겠습니다. 3.7부터 추가된 dataclass를 이용해서, immutable을 흉내낼 수 있다고 하였습니다. 잠깐. immutable의 대표적인 것은 tuple이 있습니다. 반면, mutable은 list가 있습니다. list는 append 등으로 원소를 ..
파이썬에는 한 줄을 입력받기 위한 함수로 sys.stdin의 readline만 있는 것이 아닙니다. 기본적으로 input()이라는 built in 함수를 제공합니다. 저 함수가 무엇인지 간단하게 알아보겠습니다. 먼저 1.txt에는 위와 같은 내용이 있습니다. 1 abcde, 그리고 2. 이렇게 2개의 줄이 있습니다. input 함수를 읽어봅시다. standard input (stdin)으로부터 string을 읽는다고 되어 있습니다. 그리고 개행 문자는 strip 된다고 되어 있습니다. 예제를 하나 보겠습니다. for loop로 5번 루프를 돌립니다. 각 loop마다 input()을 호출하고, 받은 문자열을 출력합니다. 입력을 1.txt에서 받아보겠습니다. 윈도우 powershell에서는 아직 redire..
파이썬의 orderedDict에 대해 조금 더 알아봅시다. 이전에 이 글에서 popitem에 대해 간략하게만 설명드리고 넘어갔습니다. 여기 조금 더 심화된 내용을 학습해 보겠습니다. OrderedDict의 경우, 들어온 순서가 유지되는 딕셔너리입니다. 고로 lru와 같은 것과 잘 맞는다고 했습니다. 예제 하나를 볼 건데요. 자세히 분석해 보겠습니다. 먼저, OrderedDict 객체를 하나 선언할 거에요. 그리고 "a", "b", "c" 순서대로 넣었습니다. 다음에 lru를 출력하고, 가장 첫 번째 원소를 출력할 거에요. 그러면 출력 결과가 이렇게 나와요. 이것에 대해서 먼저 해석해 보겠습니다. 들어온 순서를 유지하는 것이 OrderedDict이라고 했어요. 고로, 이 때 그림은 아래와 같이 그려집니다...
파이썬에서 enum의 원소를 random하게 가져오는 방법을 알아보겠습니다. 먼저, Enum을 상속받은 A 클래스를 보겠습니다. 이름이 A이고 값이 1인 것, 이름이 B이고 값이 3인 것, 이름이 C이고 값이 5인 것, 이름이 D이고 값이 7인 것이 있습니다. 랜덤하게 뽑을 것이므로, choice와 같은 것이 필요한 것은 자명해 보입니다. 그런데 이것은 sequence가 필요하다고 뜹니다. 시퀀스의 대표적인 것은 list이니, enum의 데이터를 list로 변환해야겠네요. rd.choice(list(A))를 해 주면, A에 있는 item 중에 랜덤하게 하나를 뽑습니다. 이게 다입니다. 실행 결과는 A.a, A.b, A.c, A.d 중에 하나가 나옵니다. 즉, list(enum_class_name)은, e..
최근댓글