팁: Python에서 변경 가능한 기본 인수를 주의하십시오.

Python의 기본 인수는 한 번만 평가됩니다. 평가는 함수가 호출될 때마다가 아니라 함수가 정의될 ​​때 발생합니다. 변경 가능한 기본 인수를 사용하고 특정 지점에서 이를 변경하면 숨겨진 공유 상태가 실수로 생성될 수 있습니다. 이는 변경된 인수가 이제 함수에 대한 모든 향후 호출의 기본값이 됨을 의미합니다.

다음 코드를 예로 들어 보겠습니다. 함수에 대한 모든 호출은 동일한 목록을 공유합니다. 따라서 두 번째로 호출될 때 함수는 빈 목록으로 시작하지 않습니다. 대신 기본 인수는 이전 호출의 값을 포함하는 목록입니다.

def append(n, l = []):
  l.append(n)
  return l

append(0) # [0]
append(1) # [0, 1]


변경 가능한 개체를 함수의 기본값으로 사용해야 하는 경우 대신 인수의 기본값을 None로 설정할 수 있습니다. 그런 다음 함수 본문에서 확인하면 None 부작용 없이 원하는 가변 값으로 설정할 수 있습니다.

def append(n, l = None):
  if l is None:
    l = []
  l.append(n)
  return l

append(0) # [0]
append(1) # [1]



짧은 고품질 코드 스니펫과 기사가 마음에 드십니까? 우리도 그래! 이와 같은 더 많은 기사를 보려면 30 seconds of code을 방문하거나 일일 JavaScript, React 및 Python 스니펫을 보려면 팔로우하세요! 👨‍💻

좋은 웹페이지 즐겨찾기