사용자 도구

사이트 도구


ps:python

Python

Python 몰랐던 문법과 팁들

  • and와 or 는 True/False 가 아니라 마지막으로 이밸류에이트된 값을 돌려준다 (링크)
    • JS에서 흔히 쓰듯이, (x if x else default) 와 같은 식을 (x or default)로 줄여 쓸수 있다. 딱히 안티패턴도 아닌듯 하다.
  • int형 변수의 빌트인 메소드인 bit_length()는 부호와 선행 0을 제외하고, 이진수로 정수를 나타내는 데 필요한 비트 수를 돌려줍니다. (링크)
    •  
      >>> n = -37
      >>> bin(n)
      '-0b100101'
      >>> n.bit_length()
      6
  • enumerate에 두번째 인자를 주어서 enumerate(l,n) 으로 쓰면 (n, l[n]) 부터 이터레이트한다
    • 인덱스가 필요할때만 이렇게 쓰자, 인덱스가 필요없지만 그냥 n번째 원소부터 이터레이션하고 싶은거면 그냥 리스트를 슬라이스 해서 돌리는게 더 빠르다
      • for _, x in enumerate(l, n) 가 아니라 for x in l[n:] 을 쓰라는 말.
  • round 함수가 반올림을 하는 방법은 소수부가 0.5이상이면 올림하는 것이 아니라, '가장 가까운 정수값을 리턴' 하는 것이다. 소수부가 0.5일 때는 가장 가까운 짝수로 맞추기 때문에 예상과 달리 내림을 하는 경우도 있다!
  • 파이썬의 자체 정수형은 이미 큰 수의 곱셈에 대해서 빠르게 동작하도록 구현되어있지만, 더욱 빠른 곱셈이 필요하면, decimal.Decimal로 변환해서 사용하면 된다.
  • type 힌트를 줄 때 자신의 타입을 레퍼해야 하는 경우를 처리 못하는 문제가 있다. 대표적으로 이렇게 쓰면 에러가 난다
    • @dataclasses.dataclass
      class Node:
          value: int
          left: Node
          right: Node
    • 해결하려면 future,annotations 을 임포트한다
      • from __future__ import annotations
    • 3.10부터는 디폴트로 처리될 것이라고 한다.
  • NamedTuple은 collections.NamedTuple와 typing.NamedTuple 두가지가 있다. typing.NamedTuple이 새로 추가된 거고 기능이 더 유용하니 이걸 쓰자.

버전별 추가 피쳐

  • v3.8
    • Assignment expression
    • f'{expr=}'
    • pow(x, -1, mod)
    • math.perm, math.comb
    • math.isqrt
  • v3.9
    • graphlib
    • @memoize

토론

댓글을 입력하세요:
J J D H Q
 
ps/python.txt · 마지막으로 수정됨: 2021/06/06 14:41 저자 teferi