Python의 함수 정의는 매우 간단하지만 유연성이 매우 큽니다. 일반적으로 정의된 필수 매개변수 외에도 기본 매개변수, 변수 매개변수 및 키워드 매개변수를 사용할 수 있으므로 함수에 의해 정의된 인터페이스는 복잡한 매개변수를 처리할 수 있을 뿐만 아니라 호출자의 코드를 단순화할 수 있습니다.
Python 함수에서는 변수 매개변수를 정의할 수도 있습니다. 이름에서 알 수 있듯이 가변 매개변수는 전달된 매개변수의 수가 가변적이며 1, 2 또는 임의의 숫자일 수 있거나 0일 수 있음을 의미합니다.
사례: 계산해 주세요 a2 + b2 + c2 + ….
숫자 a, b, c...,
가 주어진 수학 문제를 예로 들어보겠습니다.이 기능을 정의하려면 입력 매개변수를 결정해야 합니다. 매개변수의 개수가 불확실하기 때문에 처음에는 a, b, c...가 리스트나 튜플로 전달될 수 있다고 생각했습니다.
함수는 다음과 같이 정의할 수 있습니다.
def calc(numbers): sum = 0 for n in numbers: sum = sum + n * n return sum
그러나 호출할 때는 먼저 목록이나 튜플을 조합해야 합니다.
print(calc([1, 2, 3])) #结果:14 print(calc((1, 3, 5, 7)) #结果:84
코드 단순화
가변 매개변수를 사용하는 경우 함수 호출 방법을 다음과 같이 단순화할 수 있습니다.
따라서 함수의 매개변수를 가변 매개변수로 변경하세요.
def calc(*numbers): sum = 0 for n in numbers: sum = sum + n * n return sum
리스트 또는 튜플 매개변수를 정의하는 것과 비교 , 가변 매개변수를 정의하려면 매개변수 앞에 * 기호를 추가하기만 하면 됩니다.
함수 내부에서는 매개변수 번호가 튜플을 수신하므로 함수 코드는 전혀 변경되지 않습니다. 그러나 이 함수를 호출할 때 0개의 매개변수를 포함하여 원하는 수의 매개변수를 전달할 수 있습니다.
print(calc(1, 2)) #结果:5 print(calc()) #结果:0
이미 목록이나 튜플이 있고 변수 매개변수를 호출하고 싶다면 어떻게 해야 할까요?
例:
nums = [1, 2, 3] print(calc(nums[0], nums[1], nums[2]))
这种写法当然是可行的,问题是太繁琐。
所以Python允许在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去:
nums = [1, 2, 3] calc(*nums)
*nums表示把nums这个list的所有元素作为可变参数传进去。这种写法相当有用,而且很常见。
可变参数允许传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。
而关键字参数允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。请看示例:
def person(name, age, **kw): print('name:', name, 'age:', age, 'other:', kw)
函数person除了必选参数name和age外,还接受关键字参数kw。在调用该函数时,可以只传入必选参数:
person('Michael', 30)
运行结果:
也可以传入任意个数的关键字参数:
extra = {'city': 'Beijing', 'job': 'Engineer'} person('Jack', 24, **extra)
关键字参数有什么用?
它可以扩展函数的功能。
比如,在person函数里,保证能接收到name和age这两个参数,但是,如果调用者愿意提供更多的参数,也能收到。
试想正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。
extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**kw参数,kw将获得一个dict,注意kw获得的dict是extra的一份拷贝,对kw的改动不会影响到函数外的extra。
이 글은 Python의 기본을 바탕으로 Python 함수의 매개변수를 소개합니다. Python의 함수는 간단한 호출을 구현할 수 있을 뿐만 아니라 매우 복잡한 매개변수를 전달할 수도 있는 매우 유연한 매개변수 형식을 가지고 있습니다. 공통 변수 매개변수와 키워드 매개변수가 도입되었습니다.
위 내용은 Python 함수의 매개변수에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!