프로그래밍 언어/Python

함수 호출에서 별표 및 이중 별표 연산자가 의미하는 것

Rateye 2021. 7. 27. 10:44
728x90
반응형
질문 : 함수 호출에서 별표 및 이중 별표 연산자는 무엇을 의미합니까?

* zip(*x) 또는 f(**k) 와 같은 코드에서와 같이 Python에서 무엇을 의미합니까?

답변

단일 별표 * 는 시퀀스 / 컬렉션을 위치 인수로 압축 해제하므로 다음과 같이 할 수 있습니다.

def sum(a, b):
    return a + b
    
    values = (1, 2)
    
    s = sum(*values)
    

이것은 실제로 다음과 같이 실행되도록 튜플을 압축 해제합니다.

s = sum(1, 2)
    

이중 별표 ** 는 딕셔너리와 명명 된 인수 만 사용하여 동일합니다.

values = { 'a': 1, 'b': 2 }
    s = sum(**values)
    

다음을 결합 할 수도 있습니다.

def sum(a, b, c, d):
        return a + b + c + d
        
        values1 = (1, 2)
        values2 = { 'c': 10, 'd': 15 }
        s = sum(*values1, **values2)
        

다음과 같이 실행됩니다.

s = sum(1, 2, c=10, d=15)
        

또한 섹션 4.7.4-Python 문서의 인수 목록 압축 해제를 참조하십시오.

*x**y 인수를 사용하도록 함수를 정의 할 수 있습니다. 이렇게하면 함수가 선언에서 특별히 이름이 지정되지 않은 위치 및 / 또는 명명 된 인수를 얼마든지받을 수 있습니다.

반응형

예:

def sum(*values):
    s = 0
    for v in values:
        s = s + v
    return s

s = sum(1, 2, 3, 4, 5)

또는 ** :

def get_a(**values):
    return values['a']

s = get_a(a=1, b=2)      # returns 1

이를 통해 선언 할 필요없이 많은 수의 선택적 매개 변수를 지정할 수 있습니다.

또한 다음을 결합 할 수 있습니다.

def sum(*values, **options):
    s = 0
    for i in values:
        s = s + i
    if "neg" in options:
        if options["neg"]:
            s = -s
    return s

s = sum(1, 2, 3, 4, 5)            # returns 15
s = sum(1, 2, 3, 4, 5, neg=True)  # returns -15
s = sum(1, 2, 3, 4, 5, neg=False) # returns 15
출처 : https://stackoverflow.com/questions/2921847/what-does-the-star-and-doublestar-operator-mean-in-a-function-call
728x90
반응형