lin*_*k89 5 python python-typing
假设我们为回调定义一个类型,如下所示:
CallbackFn = Callable[[str, str, int, int], None]
Run Code Online (Sandbox Code Playgroud)
当我想要实现回调函数并使用外部工具对其进行类型检查时CallbackFn,我必须显式注释类型:
def my_callback(s1: str, s2: str, i1: int, i2: int) -> None:
...
Run Code Online (Sandbox Code Playgroud)
有什么方法可以使用定义的类型提示来CallbackFn注释函数(例如def my_callback(s1,s2,i1,i2) as CallbackFn:)以避免显式注释工作?
有点,但不推荐,或者漂亮。例如,
my_callback: CallbackFn = lambda s1, s2, i1, i2: <do the thing>
Run Code Online (Sandbox Code Playgroud)
或者如果您正在使用高阶函数
my_callback: CallbackFn = compose(f, g)
Run Code Online (Sandbox Code Playgroud)
对于某些人来说compose,f并且g。
您当然也可以公开以标准风格编写的 API,如下所示
my_callback: CallbackFn = _my_callback
def _my_callback(s1: str, s2: str, i1: int, i2: int) -> None: ...
Run Code Online (Sandbox Code Playgroud)
所有这些示例都违背了使用over命名函数的Python 风格指南。deflambda
| 归档时间: |
|
| 查看次数: |
1393 次 |
| 最近记录: |