DAY 8. * 인수 和 ** kwargs로
*args
: 다중 값 튜플, **kwargs
그들이 파이썬 기능이 특별한 매개 변수, 인수 및 필수하지 kwargs로 전달 매개 변수하지만,이 두 가지를 사용하는 습관을 때 함수 매개 변수 목록에서 선언 된 경우 다중 값 사전은, *args
다음 통과 허용 추가 매개 변수의 매개 변수의 수는 인수의 형식은 튜플 변수를 할당 할 것이다 **kwargs
명시 적으로 사전에 패키지 매개 변수를 전달합니다, 당신은 변수 이름이 정의되지 않은 사용할 수 있습니다
def output(*args, **kwargs):
print(args)
print(kwargs)
output('zhangsan', 'lisi', 5, 6,a=1,b=2,c=3)
# ('zhangsan', 'lisi', 5, 6)
# {'a': 1, 'b': 2, 'c': 3}
에서 매개 변수를 전달하는 다른 매개 변수, 그래서 넣어 반드시이있는 경우 기능 할당을 제어합니다 왼쪽에서 오른쪽으로 *args
그리고 **kwargs
마지막 함수 매개 변수 목록에 그렇지 않은 경우는 TypeError 예외가 발생합니다, 그리고 *args
에 배치해야합니다 **kwargs
인수의 올바른 순서 앞에 해야
def fun(arg, *args, **kwargs):
pass
함수를 호출 할 때 그것은 또한 사용할 수 있습니다 *
및**
def put(a, b, c):
print(f'a={a},b={b},c={c}')
put(*mylist) # a=aardvark,b=baboon,c=cat
s = {'a': 1, 'b': 2, 'c': 3}
put(**s) # a=1,b=2,c=3
이 기능을 달성 할 수있다, 원칙은 순서가 다음과 같은 간단한 시퀀스 풀기 압축을 푼입니다
>>> s = "ABCDE"
>>> a,b,c,d,e = s
>>> a,c
('A', 'C')
>>> t = (1,2,3,4,5)
>>> a1,b1,c1,d1,e1 = t
>>> a1,c1
(1, 3)
상기 서열은 그렇지 않은 경우에 ValueError 예외를 것 같아야 소자의 수의 왼쪽과 오른쪽을 풀고 단부에 사용
>>> a2,b2 = s
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
a2,b2 = s
ValueError: too many values to unpack (expected 2)
그러나 우리는 모든 순서는 매우 편리 풀고 비트 시퀀스 또는 불확실한 방법 시퀀스의 사용의 많은 많은 경우,이 시간이 우리가 사용할 수에 해당 할 수 *
와
>>> a3,*a4 = s
>>> a3,a4
('A', ['B', 'C', 'D', 'E'])
>>> while s:
f,*s = s
print(f,s)
A ['B', 'C', 'D', 'E']
B ['C', 'D', 'E']
C ['D', 'E']
D ['E']
E []
참고 기사 :