어떻게 내 타입 힌트에 기능 형식을 지정할 수 있을까요?
내가 어떻게 기능 형식으로 변수의 형식 힌트 지정합니까?(참고 항목:PEP483.)
import typing
def my_function(func: typing.Function):
func()
으로서 @ jonrsharpe 발언에서 지적했듯이, 이 타이핑 할 수 있다.Callable:
from typing import Callable
def my_function(func: Callable):
주의: Callable
스스로에 해당합니다.Callable[..., Any]
. 그러한Callable
는 임의의 수 및 유형의 인수를 받아들입니다(...
임의의 유형의 값을 반환합니다( ).Any
만일 이게 너무 구속 받지 않는 것이다.).는 입력 인수 목록 및 반환 형식의 유형을 지정할 수 있다.
예를 들어, 주어진:
def sum(a: int, b: int) -> int: return a+b
이와 상응하는 주석은:
Callable[[int, int], int]
즉, 매개 변수를 외부 가입에서 쇄골 바깥쪽 구독에서 두번째 요소로 반환 형식과 sub-scripted 있다.일반적으로:
Callable[[ParamType1, ParamType2, .., ParamTypeN], ReturnType]
주목할 또 다른 흥미로운 점은 기능에 건설 이용할 수 있다.type()
의 형식 기능과 그것을 사용하면 된다.그래서 그럴 수도
def f(my_function: type(abs)) -> int:
return my_function(100)
아니면 그런 형태로
이 기능을 필요로 하는 구체적인 사용 사례는 PyCharm에서 풍부한 코드 완성을 가능하게 하는 것이었습니다.사용.Callable
PyCharm은 그 물체에 어떤 물질이 있다는 것을 암시하지 않았다..__code__
Attribute(아트리뷰트)를 선택합니다.이 경우는, 제가 원하던 것입니다.
우연히 마주쳤다types
모듈 및..
from types import FunctionType
오브젝트에 주석을 달 수 있게 되었습니다.FunctionType
그리고, PyCharm은 이제 내 물체에 어떤 것이 있다는 것을 암시합니다..__code__
기여하다.
OP는 왜 이런 유형의 힌트가 그들에게 유용한지에 대해 명확하지 않았다.Callable은 확실히 구현되는 모든 것에 유효합니다..__call__()
다만, 인터페이스의 자세한 설명을 위해서,types
모듈.
Python이 두 개의 매우 유사한 모듈을 필요로 했다는 것이 유감입니다.
python3에서는 이 기능은import typing
:
def my_function(other_function: callable):
pass
가장 쉽고 세련된 솔루션은 다음과 같습니다.
def f(my_function: type(lambda x: None)):
return my_function()
이는 다음과 같은 방법으로 입증할 수 있습니다.
def poww(num1, num2):
return num1**num2
print(type(lambda x: None) == type(poww))
출력은 다음과 같습니다.True
언급URL : https://stackoverflow.com/questions/37835179/how-can-i-specify-the-function-type-in-my-type-hints
'source' 카테고리의 다른 글
sql 키워드 'like'를 사용하여 암호화된 데이터를 검색하는 방법 (0) | 2022.09.15 |
---|---|
웹 브라우저에 푸시 알림을 보내는 방법 (0) | 2022.09.15 |
static 키워드 inside 함수 (0) | 2022.09.15 |
문자열을 여러 개의 단어 경계 구분 기호를 사용하여 단어로 분할 (0) | 2022.09.15 |
Windows: XAMPP vs WampServer vs EasyPHP vs 대체 (0) | 2022.09.15 |