단일 별표( *)는 시퀀스나 컬렉션을 위치 인수로 풀어내는 데 중요한 역할을 합니다. 다음 예를 고려해보세요.
def add(a, b): return a + b values = (1, 2) s = add(*values) # Equivalent to: s = add(1, 2)
* 연산자를 사용하면 값 튜플의 압축을 효과적으로 풀고 해당 요소(1과 2)를 add 함수에 인수로 전달합니다. 이는 가변 길이 시퀀스로 작업할 때 특히 유용합니다.
이중 별표(**)는 비슷한 목적으로 사용되지만 사전의 경우 다음을 수행할 수 있습니다. 명명된 인수에 대한 값을 제공합니다. 다음 예를 들어보세요.
values = { 'a': 1, 'b': 2 } s = add(**values) # Equivalent to: s = add(a=1, b=2)
여기에서 ** 연산자는 값 사전의 압축을 풀어 키-값 쌍을 추출하고 이를 사용하여 add 함수 호출에서 해당 키워드 인수를 설정합니다.
두 연산자를 동일한 기능으로 결합할 수 있다는 점이 주목할 만합니다. 부르다. 다음 시나리오를 고려해보세요.
def sum(a, b, c, d): return a + b + c + d values1 = (1, 2) values2 = { 'c': 10, 'd': 15 } s = add(*values1, **values2) # Equivalent to: s = sum(1, 2, c=10, d=15)
이 호출은 value1을 처음 두 개의 위치 인수(a 및 b)에 효과적으로 압축 해제하고, value2를 나머지 키워드 인수(c 및 d)에 압축 해제합니다.
구현 및 성능에 미치는 영향:
Python은 함수 인수 바인딩과 동적 호출의 조합을 통해 이 동작을 구현합니다. 세대. 및 *를 사용하면 가변 길이 인수를 사용하여 함수를 유연하게 호출할 수 있으므로 간결하고 다재다능한 코드가 생성됩니다. 그러나 이러한 연산자를 과도하게 사용하면 특히 빈도가 높은 함수 호출과 결합할 때 성능에 잠재적으로 영향을 미칠 수 있다는 점에 유의하는 것이 중요합니다.
위 내용은 Python 함수에서 * 및 Unpack 인수를 어떻게 수행합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!