python 의 * 와 * * 의 전 참 메커니즘
그 밖 에 python 에 서 는 패키지 방식 의 매개 변수 전달 도 허용 합 니 다. 매개 변수 개수 와 매개 변수 형식의 함수 호출 에 기반 을 다 져 주지 않 았 습 니 다.
def f(*a,**b)
패키지 매개 변수 전달 의 실현 은 함 수 를 정의 할 때 형 삼 앞 에 * 또는 * * 를 추가 하 는 것 입 니 다. * 대응 하 는 형 삼 (위의 a 참조) 은 하나의 원 그룹 (tuple, * * 에 대응 하 는 형 삼 (위의 b 참조) 으로 해 석 됩 니 다. 구체 적 으로 호출 할 때 매개 변 수 는 아래 코드 를 참조 하 십시오.
def f(*a,**b):
print(a)
print(b)
a=3
b=4
f(a,b,m=1,n=2)
위 코드 의 실행 결 과 는:
(3, 4) {'n': 2, 'm': 1} 을 보면 키 워드 를 사용 하지 않 고 전달 하 는 변 수 는 원 그룹의 일부분 으로 * a 에 전달 되 고 키 워드 를 사용 하여 전달 하 는 변 수 는 사전 의 일부분 으로 * * b 에 전달 된다.
동시에 tricky 가 있 는 곳 이 있 습 니 다. python 에서 비 키워드 전달 변 수 는 키워드 전달 변수 앞 에 써 야 한다 고 규정 하고 있 기 때문에 혼합 사용 * 와 * * 시 정시 * 형 참 은 * * 형 삼 의 앞 에 있 습 니 다.
그 밖 에 함수 호출 을 할 때 그 와 세트 로 소 포 를 푸 는 방식 이 있 습 니 다.
def f(*a,**b):
print(a)
print(b)
c=3
d=4
h=(c,d)
k={"m":1,"n":2}
f(*h,**k)
위 코드 의 출력 은 앞 과 일치 합 니 다.
원 그룹 이나 사전 을 매개 변수 로 입력 할 때 소포 형식의 형 삼 정의 (위 에서 h 를 * a, k 를 * * b 에 전달 하 는 경우) 에 적합 하려 면 원 그룹 용 *, 사전 은 * * 의 방식 으로 '소포 풀기' 로 전달 하면 됩 니 다.
실제로 f 를 호출 할 때 * 를 사용 하 는 것 은 Python 에 게 알 리 기 위해 서 입 니 다. 실제 인삼 h 를 분 산 된 2 개의 요소 c 와 d 로 분리 하여 각각 전달 하고 싶 습 니 다.원 그룹 으로 정 의 됨) 도 적 용 됩 니 다.
def f(c,d,n,m):
print(c)
print(d)
print(m)
print(n)
a=3
b=4
h=[a,b]
k={"m":1,"n":2}
f(*h,**k)
위의 출력 은?
3 4 1 2
앞에서 말 한 것 과 일치 하기 때문에 * * k 라 는 사전 의 소 포 를 풀 려 면 함수 의 형 참 명 과 사전 의 key 값 이 대응 해 야 합 니 다.
위의 예 에서 def f (c, d, n, m) 의 n 을 다른 자모 로 바 꾸 면 잘못 보고 합 니 다.
소포 가 전 달 된 후 함 수 를 호출 할 때 임의의 매개 변 수 를 전달 할 수 있 습 니 다. 원본 과 사전 은 모두 len 방법 으로 요소 의 개 수 를 얻 을 수 있 기 때문에 함 수 를 작성 할 때 이 정보 에 따라 서로 다른 매개 변수 수 를 처리 할 수 있 습 니 다.
본 고 는 블 로그 에서 전 환 됩 니 다: python 의 * 와 * 매개 변수 전달 메커니즘
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.