我有一個接受其他函式的函式,并且想鍵入提示這個“包裝器”函式的回傳值。該功能與下面的類似,但具有更多特定于用例的邏輯。也就是說,這個函式也很方便:
def guard(func, default: WhatGoesHere = None) -> Optional[WhatGoesHere]:
try:
return func()
except:
return default
該函式像這樣使用,具有現有的型別提示函式以及偶爾的 lambda:
def difficult_math() -> int:
return e^(pi * i) / 0
if res := guard(difficult_math):
...
if res := guard(lambda: x/3):
...
uj5u.com熱心網友回復:
像這樣的東西
from typing import Callable, Optional, TypeVar
R = TypeVar('R')
def guard(func: Callable[[], R], default: R = None) -> Optional[R]:
try:
return func()
except:
return default
如果您的功能需要,*args, **kwargs您可以使用ParamSpec. 以及您想要包含的其他位置引數Concatenate。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/473598.html
標籤:Python python-3.x 类型提示
