[PYTHON] 다중 매개 변수 괄호가있는 파이썬 함수
PYTHON다중 매개 변수 괄호가있는 파이썬 함수
나는 h (a) (b)가 무엇을 의미하는지 이해하는데 어려움을 겪고있다. 나는 어제 이전에 그것들 중 하나를 본 적이 없었으며, 나는 이런 식으로 함수를 선언 할 수 없었다 :
def f (a)(b):
return a(b)
def f (a, b) : 할 때도 작동하지 않았습니다. 이 기능들은 무엇을합니까? 어떻게 선언 할 수 있습니까? 그리고 마지막으로 f (a, b)와 f (a) (b)의 차이점은 무엇입니까?
해결법
-
==============================
1.다중 매개 변수 대괄호가있는 함수는 정의 할 때 보았 듯이 존재하지 않습니다. 그러나 (다른) 함수를 반환하는 함수가 있습니다.
다중 매개 변수 대괄호가있는 함수는 정의 할 때 보았 듯이 존재하지 않습니다. 그러나 (다른) 함수를 반환하는 함수가 있습니다.
def func(a): def func2(b): return a + b return func2
이제 func ()를 호출하면 내부 func2 함수가 반환됩니다.
>>> func2 = func(1) # You don't have to call it func2 here >>> func2(2) 3
그러나 나중에 내부 함수가 필요 없다면 변수에 저장할 필요가 없으며 하나씩 호출 할 수 있습니다.
>>> func(1)(2) # func(1) returns func2 which is then called with (2) 3
인수를 취하는 데코레이터를 정의 할 때 매우 일반적인 관용구입니다.
func ()를 호출하면 func의 정의 안에 func2라는 이름이 있지만 항상 새로운 내부 함수가 만들어집니다.
>>> f1 = func(1) >>> f2 = func(1) >>> f1(1), f2(1) (2, 2) >>> f1 is f2 False
f (a) (b)가하는 일을 알고 있지만 요약하면 이제 분명해야합니다.
-
==============================
2.f (a) (b)는 f (a)가 호출 할 수있는 값을 반환한다는 것을 의미합니다. 짧은 형태의
f (a) (b)는 f (a)가 호출 할 수있는 값을 반환한다는 것을 의미합니다. 짧은 형태의
g = f(a) g(b)
하나의 구문 구조가 아니라는 것을 강조하기 위해 여분의 괄호 쌍을 추가하는 것이 더 편할 수도 있습니다.
(f(a))(b) # f(a) is evaluated first, then the result is applied to b
중첩 된 사전을 인덱싱하기 위해 대괄호를 두 배로 두는 것과 정확히 비슷합니다.
d1[x][y]
~에 해당합니다.
d2 = d1[x] d2[y]
-
==============================
3.우리는 다음과 같은 식을 가질 수 있습니다.
우리는 다음과 같은 식을 가질 수 있습니다.
f(a)(b)
그런 다음 f (a)는 인수 b로 호출 된 함수 자체를 반환합니다. 다음 예제를 고려해보십시오.
def f(a): def g(b): return a * b return g
f (5)는 기본적으로 함수를 반환하기 때문에 f (5) (4)는 5 * 4로 평가됩니다.
def g(b): return 5 * b
이제는 이런 일을 할 수 있습니다.
mult_by_5 = f(5) [mult_by_5(x) for x in range(10)]
좀더 중첩 된 함수는 어떨까요?
def f(a): def g(b): def h(c): return a * b *c return h return g f(2)(3)(4) # 24
from https://stackoverflow.com/questions/42874825/python-functions-with-multiple-parameter-brackets by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] gflags없이 Google 애널리틱스 자격증 명을 얻는 방법 - run_flow ()를 대신 사용 하시겠습니까? (0) | 2018.11.29 |
---|---|
[PYTHON] 파이썬에서 오버랩 컴퓨팅을위한 내장 함수 (0) | 2018.11.29 |
[PYTHON] 파이썬에서 두 날짜 문자열 비교하기 (0) | 2018.11.29 |
[PYTHON] TypeError : b'1 '은 JSON 직렬 가능하지 않습니다. (0) | 2018.11.29 |
[PYTHON] 파이썬 정규식 파스 스트림 (0) | 2018.11.29 |