파이썬 * 인수와 ** kwargs로 순서 및 압축 풀기

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 []

참고 기사 :

상세 파이썬 풀기 순서 (4)

스택 오버플로

Python3.x을 풀고 시퀀스에서 예를 참조하십시오

GitHub의 파이썬 얼굴 질문

게시 62 개 원래 기사 · 원 찬양 33 ·은 10000 +를 볼

추천

출처blog.csdn.net/zjbyough/article/details/96511437