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
반응형
'프로그래밍 언어 > Python' 카테고리의 다른 글
Python 3에서 raw_input을 사용하는 방법 (0) | 2021.07.28 |
---|---|
Python에서 현재 사용자 이름을 가져 오는 방법 (0) | 2021.07.28 |
Python의 easy_install로 설치된 패키지를 제거하는 방법 (0) | 2021.07.23 |
[Python] 다중 처리 vs 스레딩 (0) | 2021.07.22 |
Python2에서 dict.items ()와 dict.iteritems ()의 차이점 (0) | 2021.07.22 |