Python 함수에서 기본 인수를 사용하고 기록하는 방법

사업

Python 함수 정의에서 기본 인수를 설정하면 함수 호출 중에 인수가 생략된 경우 기본값이 사용됩니다.

다음 세부 사항은 아래에 설명되어 있습니다.

  • 기본 인수 설정
  • 기본 인수의 위치에 대한 제약 조건
  • 목록이나 사전을 기본값으로 사용하는 경우

기본 인수 설정

함수 정의에서 인수 이름 = 기본값인 경우 해당 인수가 생략되면 기본값이 사용됩니다.

def func_default(arg1, arg2='default_x', arg3='default_y'):
    print(arg1)
    print(arg2)
    print(arg3)

func_default('a')
# a
# default_x
# default_y

func_default('a', 'b')
# a
# b
# default_y

func_default('a', arg3='c')
# a
# default_x
# c

기본 인수의 위치에 대한 제약 조건

함수를 정의할 때 기본 인수를 일반 인수(기본값이 지정되지 않은 인수) 앞에 배치하면 오류가 발생합니다.
SyntaxError

# def func_default_error(arg2='default_a', arg3='default_b', arg1):
#     print(arg1)
#     print(arg2)

# SyntaxError: non-default argument follows default argument

목록이나 사전을 기본값으로 사용하는 경우

목록이나 사전과 같은 업데이트 가능한(변경 가능한) 객체가 기본값으로 지정되면 해당 객체는 함수가 정의될 ​​때 생성됩니다. 그런 다음 해당 인수 없이 함수를 호출하면 동일한 개체가 사용됩니다.

기본 인수 값은 함수 정의가 실행될 때 왼쪽에서 오른쪽으로 평가됩니다. 즉, 기본 인수 표현식은 함수가 정의될 ​​때 한 번만 평가되고 동일한 “계산된” 값이 각 호출에 사용됩니다.
8.7. Function definitions — Python 3.10.2 Documentation

따라서 예를 들어 목록이나 사전을 기본 인수로 사용하여 요소를 추가하고 해당 인수 없이 여러 번 호출되는 함수가 정의된 경우 요소가 동일한 개체에 반복적으로 추가됩니다.

목록의 예.

def func_default_list(l=[0, 1, 2], v=3):
    l.append(v)
    print(l)

func_default_list([0, 0, 0], 100)
# [0, 0, 0, 100]

func_default_list()
# [0, 1, 2, 3]

func_default_list()
# [0, 1, 2, 3, 3]

func_default_list()
# [0, 1, 2, 3, 3, 3]

사전의 예.

def func_default_dict(d={'default': 0}, k='new', v=100):
    d[k] = v
    print(d)

func_default_dict()
# {'default': 0, 'new': 100}

func_default_dict(k='new2', v=200)
# {'default': 0, 'new': 100, 'new2': 200}

함수가 호출될 때마다 새 객체가 생성됩니다.

def func_default_list_none(l=None, v=3):
    if l is None:
        l = [0, 1, 2]
    l.append(v)
    print(l)

func_default_list_none()
# [0, 1, 2, 3]

func_default_list_none()
# [0, 1, 2, 3]