복붙노트

[PYTHON] 함수 이름에서 변수 이름 앞에 *와 **는 무엇을 의미합니까? [복제]

PYTHON

함수 이름에서 변수 이름 앞에 *와 **는 무엇을 의미합니까? [복제]

나는 파이썬 코드 조각을 읽었으며,이 코드에서 **와 **는 무엇을 의미하는지 모른다.

def functionA(self, *a, **kw):
   // code here

난 단지 *의 한가지 사용법을 알고있다 : 모든 속성을 추출한다. 그것은 메소드 나 생성자의 매개 변수이다.

위의 함수에 해당하면 나머지는 무엇입니까? **?

해결법

  1. ==============================

    1.함수 헤더 내부 :

    함수 헤더 내부 :

    * 튜플에있는 모든 위치 인수를 수집합니다.

    ** 사전에있는 모든 키워드 인수를 수집합니다.

    >>> def functionA(*a, **kw):
           print(a)
           print(kw)
    
    
    >>> functionA(1, 2, 3, 4, 5, 6, a=2, b=3, c=5)
    (1, 2, 3, 4, 5, 6)
    {'a': 2, 'c': 5, 'b': 3}
    

    함수 호출에서 :

    * 목록 또는 튜플을 위치 인수에 압축을 풉니 다.

    ** 키워드 인수에 사전 압축을 풉니 다.

    >>> lis=[1, 2, 3, 4]
    >>> dic={'a': 10, 'b':20}
    >>> functionA(*lis, **dic)  #it is similar to functionA(1, 2, 3, 4, a=10, b=20)
    (1, 2, 3, 4)
    {'a': 10, 'b': 20}
    
  2. ==============================

    2.** 지정된 인수 이름을 가져 와서 사전에 넣습니다. 그래서:

    ** 지정된 인수 이름을 가져 와서 사전에 넣습니다. 그래서:

    def func(**stuff):
        print(stuff)
    
    func(one = 1, two = 2)
    

    인쇄할까요?

    {'one': 1, 'two': 2}
    
  3. ==============================

    3.**는 함수의 명명 된 인수를 의미합니다.

    **는 함수의 명명 된 인수를 의미합니다.

    $ cat 2.py
    def k(**argv):
        print argv
    
    k(a=10, b = 20)
    
    $ python 2.py
    {'a': 10, 'b': 20}
    

    argv는 함수의 모든 명명 된 인수를 포함하는 사전입니다.

    그리고 그것을 뒤집을 수도 있습니다. 사전을 일련의 속성으로 사용할 수 있습니다. 함수의 경우 :

    def k(a=10, b=20):
      print a
      print b
    
    d={'a':30,'b':40}
    k(**d)
    

    인쇄 할 것이다.

    30
    40
    
  4. from https://stackoverflow.com/questions/11315010/what-do-and-before-a-variable-name-mean-in-a-function-signature by cc-by-sa and MIT license