[PYTHON] 함수 이름에서 변수 이름 앞에 *와 **는 무엇을 의미합니까? [복제]
PYTHON함수 이름에서 변수 이름 앞에 *와 **는 무엇을 의미합니까? [복제]
나는 파이썬 코드 조각을 읽었으며,이 코드에서 **와 **는 무엇을 의미하는지 모른다.
def functionA(self, *a, **kw):
// code here
난 단지 *의 한가지 사용법을 알고있다 : 모든 속성을 추출한다. 그것은 메소드 나 생성자의 매개 변수이다.
위의 함수에 해당하면 나머지는 무엇입니까? **?
해결법
-
==============================
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.** 지정된 인수 이름을 가져 와서 사전에 넣습니다. 그래서:
** 지정된 인수 이름을 가져 와서 사전에 넣습니다. 그래서:
def func(**stuff): print(stuff) func(one = 1, two = 2)
인쇄할까요?
{'one': 1, 'two': 2}
-
==============================
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
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
'PYTHON' 카테고리의 다른 글
[PYTHON] 데코레이터 클래스와 데코레이터 함수의 차이점 (0) | 2018.11.17 |
---|---|
[PYTHON] 파이썬에서 NTFS 연결 지점 만들기 (0) | 2018.11.17 |
[PYTHON] 파이썬에서 유니 코드 이스케이프 시퀀스가있는 유니 코드 텍스트 [duplicate] (0) | 2018.11.17 |
[PYTHON] 한 목록을 다른 파이썬으로 매핑하는 방법은 무엇입니까? [복제] (0) | 2018.11.17 |
[PYTHON] Paramiko와 exec_command - 원격 프로세스를 종료합니까? (0) | 2018.11.17 |