함수 호출에서 **(이중 별/별표) 및 *(별/별표)는 무엇을 의미합니까?
like음음음 in in in in in in와 같은 zip(*x)
★★★★★★★★★★★★★★★★★」f(**k)
의, 의 기능*
★★★★★★★★★★★★★★★★★」**
각을을의?의 미??Python은 이러한 동작을 어떻게 구현하며 성능에는 어떤 영향이 있습니까?
다음 항목도 참조하십시오.튜플을 인수로 확장합니다.OP에서 사용해야 하는 질문을 끝내려면 이 페이지를 사용하십시오.*
그게 존재하는지 모르기 때문입니다.
파라미터는 **(이중 별/별 디스크) 및 *(별/별 디스크)의 기능을 참조하십시오.매개변수에 대한 보충 질문을 위해 사용합니다.
★★★★*
시퀀스 또는 컬렉션을 위치 인수로 압축 해제합니다.「」가 .
def add(a, b):
return a + b
values = (1, 2)
「 」의 *
unpacking, unpacking, unpacking, unpacking ada 라고 쓸 수 .s = add(*values)
쓰면 s = add(1, 2)
.
★★★**
를 하여 인수 합니다.즉, 인수는 다음과 같습니다.
values = { 'a': 1, 'b': 2 }
s = add(**values) # equivalent to add(a=1, b=2)
양쪽 연산자를 같은 함수 호출에 사용할 수 있습니다.예를 들어 다음과 같습니다.
def sum(a, b, c, d):
return a + b + c + d
values1 = (1, 2)
values2 = { 'c': 10, 'd': 15 }
s = add(*values1, **values2)
s = sum(1, 2, c=10, d=15)
.
Python 설명서에서 튜토리얼의 관련 섹션을 참조하십시오.
similarly유 similarly,, similarly 、*
★★★★★★★★★★★★★★★★★」**
파라미터에 사용할 수 있습니다.「」를 사용합니다.*
는 임의의 인수를 수 인수는 파라미터로 됩니다.예를 들어, 「」는 「Positional 인수입니다.」는 「Positional 인수입니다.이 인수는 단일 파라미터로 수집됩니다.
def add(*values):
s = 0
for v in values:
s = s + v
return s
처럼 됩니다.s = add(1, 2, 3, 4, 5)
,values
(1, 2, 3, 4, 5)
그 (그 결과)가 생깁니다만,15
를 참조해 주세요.
는 '이러다', '이러다', '이러다', '이러다', '이러다', '이러다', '이러다', '이러다', '이러다', '이러다'로 표시되어 있습니다.**
을 받다dict
:
def get_a(**values):
return values['a']
s = get_a(a=1, b=2) # returns 1
이를 통해 다수의 옵션파라미터를 선언할 필요 없이 지정할 수 있습니다.
이 두 가지를 조합할 수 있습니다.
def add(*values, **options):
s = 0
for i in values:
s = s + i
if "neg" in options:
if options["neg"]:
s = -s
return s
s = add(1, 2, 3, 4, 5) # returns 15
s = add(1, 2, 3, 4, 5, neg=True) # returns -15
s = add(1, 2, 3, 4, 5, neg=False) # returns 15
에서는, 의 별이 인수로 를 들면, 「」).zip(*x)
is is is is is와 zip(x1, x2, x3)
givenx=[x1,x2,x3]
인수 "Discription")로f(**k)
is is is is is와 f(x=my_x, y=my_y)
givenk = {'x':my_x, 'y':my_y}
.
이치노예를 들어, 예를 들면, 「CHANGE:」는, 「CHANGE:」라고 하는, 「CHANGE: EGE: CHANGEGE: EGE:def foo(*x)
는 "의 수의 하며, "foo"를 통해 해당 수 x
가 콜한 )foo(1,2,3)
,x
되다(1, 2, 3)
및 )" »def bar(**k)
" 키워드 하며, 이러한 인수에는 "bar", "bar" 또는 "bar"를 통해 접근할 수 .k
(즉, 사용자가 전화했을 경우)bar(x=42, y=23)
,k
될 것이다{'x': 42, 'y': 23}
)".
함수 호출의 인수를 저장할 때 특히 유용합니다.
예를 들어, 함수 '추가'에 대한 몇 가지 단위 테스트가 있다고 가정합니다.
def add(a, b):
return a + b
tests = { (1,4):5, (0, 0):0, (-1, 3):3 }
for test, result in tests.items():
print('test: adding', test, '==', result, '---', add(*test) == result)
콜 추가를 호출하는 방법은 다음과 같은 작업을 수동으로 수행하는 것 외에add(test[0], test[1])
못생겼죠.또한 변수의 수가 다양할 경우 필요한 모든 if 문장으로 인해 코드가 상당히 악화될 수 있습니다.
공장 객체(개체를 작성하는 객체)를 정의하는 데도 유용합니다.예를 들어, 자동차 객체를 만들어 반환하는 Factory 클래스가 있다고 가정합니다.당신이 할 수 있는 건myFactory.make_car('red', 'bmw', '335ix')
작성하다Car('red', 'bmw', '335ix')
그러면 이 반환됩니다.
def make_car(*args):
return Car(*args)
이 기능은 슈퍼클래스의 컨스트럭터를 호출하는 경우에도 편리합니다.
이것은 확장 콜 구문이라고 불립니다.매뉴얼에서 다음 항목을 참조하십시오.
함수 호출에 *expression 구문이 표시되는 경우 식을 시퀀스로 평가해야 합니다.이 시퀀스로부터의 요소는 추가 위치 인수인 것처럼 취급됩니다.위치 인수 x1, …, xN이 존재하며 식이 시퀀스 y1, …, yM으로 평가되는 경우 이는 M+N 위치 인수 x1, …, xN, y1, …, YM을 가진 콜과 동일합니다.
또, 다음과 같이 합니다.
함수 호출에 **expression 구문이 표시되는 경우 표현은 매핑에 대해 평가해야 합니다.매핑의 내용은 추가 키워드 인수로 취급됩니다.expression 및 explicit 키워드 인수로 키워드가 표시되는 경우 TypeError 예외가 발생합니다.
언급URL : https://stackoverflow.com/questions/2921847/what-do-double-star-asterisk-and-star-asterisk-mean-in-a-function-call
'programing' 카테고리의 다른 글
정지된 도커 컨테이너/시작되지 않은 도커 컨테이너의 파일을 편집하는 방법 (0) | 2023.04.12 |
---|---|
Enter 키를 누르지 않으면 Excel 값이 업데이트되지 않습니다. (0) | 2023.04.12 |
심볼 링크가 있는지 확인하는 방법 (0) | 2023.04.12 |
printf 문자 채우기 (0) | 2023.04.12 |
콘텐츠에 맞게 UITextView 크기를 조정하려면 어떻게 해야 합니까? (0) | 2023.04.12 |