피해야 할 Python Anti-pattern .

3026 단어

Python 반패턴: Impure(IO) 기본 인수



파이썬 함수에서 가장 좋아하는 기능 중 하나는 기본 인수입니다. 우리는 그것들을 사용합니다
매일 . 하지만 당신이 돌봐야 할 문제가 있습니다.

함수 기본 인수는 함수 호출 시간이 아니라 모듈 로드 시간에 평가됩니다.
기본 인수가 정적이고 결정적일 때 성능 이점에 도움이 됩니다.

따라서 함수가 비결정적이거나 부작용이 있는 경우 문제가 발생할 수 있습니다.
예에서 볼 수 있듯이 인쇄된 시간은 고정되어 있습니다. 코드가 처음 평가될 때 한 번 설정되었습니다.


# Antitpattern and  buggy
def current_datetime(dt = datetime.datetime.now()):
    print(dt)

>>> current_datetime()
2021-10-09 16:09:43.009959
>>> current_datetime()
2021-10-09 16:09:43.009959

# do this instead 

def current_datetime(dt=None) :
  if dt is None :
    dt = datetime.datetime.now()
  print(dt)

current_datetime()
>> 2022-07-24 16:07:16.435203
current_datetime()
>> 2022-07-24 16:08:16.635203


좋은 웹페이지 즐겨찾기