반응형
파이썬의 다른 함수 내에서 함수를 호출하려고하는데 올바른 구문을 찾을 수 없습니다. 내가 원하는 것은 다음과 같습니다.
def wrapper(func, args):
func(args)
def func1(x):
print(x)
def func2(x, y, z):
return x+y+z
wrapper(func1, [x])
wrapper(func2, [x, y, z])
이 경우 첫 번째 통화는 작동하고 두 번째는 작동하지 않습니다. 내가 수정하고 싶은 것은 호출 된 함수가 아니라 래퍼 함수입니다.
해결 방법
다른 답변을 조금 확장하려면 :
라인에서 :
def wrapper(func, *args):
args
옆의 *는 "주어진 나머지 매개 변수를 가져 와서 args
라는 목록에 넣습니다"를 의미합니다.
라인에서 :
func(*args)
여기서 args
옆의 *는 "args라는이 목록을 가져와 나머지 매개 변수에 '언 래핑'함을 의미합니다.
따라서 다음을 수행 할 수 있습니다.
def wrapper1(func, *args): # with star
func(*args)
def wrapper2(func, args): # without star
func(*args)
def func2(x, y, z):
print x+y+z
wrapper1(func2, 1, 2, 3)
wrapper2(func2, [1, 2, 3])
wrapper2
에서는 목록이 명시 적으로 전달되지만 두 래퍼 모두 args
에는 [1,2,3]
목록이 포함됩니다.
참조 페이지 https://stackoverflow.com/questions/817087
반응형
'파이썬' 카테고리의 다른 글
파이썬 밀리 초 정밀도로 Unix 타임 스탬프에 대한 datetime (0) | 2020.09.25 |
---|---|
파이썬 Python 및 Paramiko를 사용하여 SSH 터널을 만드는 방법은 무엇입니까? (0) | 2020.09.24 |
파이썬 Python (Regex)에서 숫자 삭제 (0) | 2020.09.24 |
파이썬 Python : 최대 재귀 깊이 초과 (0) | 2020.09.24 |
파이썬 목록의 내용을 가져 와서 다른 목록에 추가 (0) | 2020.09.24 |
댓글