>  기사  >  백엔드 개발  >  Python에서 ** 및 * 매개변수의 용도는 무엇입니까?

Python에서 ** 및 * 매개변수의 용도는 무엇입니까?

silencement
silencement원래의
2019-05-23 14:52:474986검색

Python에서 "**" 매개변수는 여기서 허용되는 키워드 매개변수가 얼마든지 허용됨을 나타냅니다. 즉, "*" 매개변수는 사전으로 해석됩니다. 여기서는 키워드가 아닌 매개변수를 얼마든지 허용합니다. Word 매개변수는 배열 형식으로 저장됩니다. 즉, 튜플로 해석됩니다.

Python에서 ** 및 * 매개변수의 용도는 무엇입니까?

Python의 매개변수 전달 메커니즘에는 값 전달(int, float 및 기타 값 데이터 유형)과 참조 전달(사전 및 목록과 같은 값이 아닌 개체 데이터 유형으로 표현됨)과 편리한 키워드라는 두 가지 기본 메커니즘이 있습니다. 기능 전달(함수의 형식 매개변수 이름을 직접 사용하여 실제 매개변수의 전송 대상을 지정합니다. 예를 들어 함수가 def f(a,b,c)로 정의된 경우 f(b=1,c= 2,a=3)은 호출 시 형식 매개변수 대상의 전송 방법을 지정하여 형식 매개변수와 C 언어와 같은 실제 매개변수 간의 위치 대응을 고수할 필요 없이 사용할 수 있습니다. 또한 Python에서는 매개변수 전송도 허용합니다. 정의되지 않은 수의 매개변수인 래핑 메소드와 매개변수 유형은 함수 호출의 기초를 제공합니다.

예: def f(*a,**b), 래핑된 매개변수 전송 구현은 함수를 정의할 때 형식 매개변수 앞에 * 또는 **를 추가하는 것입니다. 형식 매개변수는 *에 해당합니다(예: 위)는 튜플로 해석되며 **(예: 위의 b)에 해당하는 형식 매개변수는 사전으로 해석됩니다. 호출 중 특정 매개변수 전송에 대해서는 다음 코드를 참조하세요.

Python에서 ** 및 * 매개변수의 용도는 무엇입니까?

위 코드의 실행 결과는 다음과 같습니다.

(3, 4)
{'n': 2, 'm': 1}
키워드를 사용하지 않고 전달된 변수는 *a의 일부로 전달되는 것을 볼 수 있습니다. 튜플, 키를 사용하는 동안 단어로 전달된 변수는 사전의 일부로 **b에 전달됩니다.

동시에 Python에서는 키워드가 아닌 변수로 전달된 변수를 변수 앞에 작성해야 한다고 규정합니다. 키워드로 전달되므로 * 형식 매개변수는 ** 형식 매개변수 앞에 와야 합니다.

또한 함수 호출 시 unwrapping이라는 메서드가 있습니다.

Python에서 ** 및 * 매개변수의 용도는 무엇입니까?

위 코드의 출력은 이전 코드와 동일합니다.

튜플이나 사전을 매개변수로 전달할 때 래핑된 형식의 형식 매개변수 정의를 적용하려는 경우(예: h를 *a 및 k에 전달) 위의 **b), 튜플에 따라 * 및 사전을 사용합니다. **를 사용하여 "래핑 해제"하고 전달합니다.

사실, f를 호출할 때 *를 사용하는 것은 Python에게 실제 매개변수를 분할하고 싶다는 사실을 상기시키기 위한 것입니다. h를 두 개의 분산된 요소 c와 d로 분리하고 전달합니다. (위 코드에서 f를 def f(arg1, arg2, **b)로 정의하여 arg1이 값 3과 arg2를 얻도록 할 수도 있습니다. 값 4를 얻습니다) **또한, 래핑할 때 *는 목록에도 적용됩니다([]는 목록을 정의하고, ()는 튜플을 정의합니다)

Python에서 ** 및 * 매개변수의 용도는 무엇입니까?

.

위 내용은 Python에서 ** 및 * 매개변수의 용도는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.