指定Callable变量fn
以*my_args
作为参数的最佳方法是什么?像这样:
def test(fn: Callable([Tuple[any]],None),*my_args: any) -> None:
fn(*myargs)
指定Callable变量fn
以*my_args
作为参数的最佳方法是什么?像这样:
def test(fn: Callable([Tuple[any]],None),*my_args: any) -> None:
fn(*myargs)
摘自typing.Callable
上的文档:
没有语法指示可选或关键字参数;这种函数类型很少用作回调类型。
Callable[...,ReturnType]
(大写省略号)可用于使用任何数量的参数并返回ReturnType
来键入提示可调用的提示。
因此,在*args
是可选且ReturnType
是None
的情况下,请使用
fn: Callable[...,None]
P.s。我不使用类型提示,因此如果我误解了任何内容,请告诉我。
,现在使用 Python 3.10 中的 PEP 612,您可以这样写:
from typing import Callable,ParamSpec
P = ParamSpec("P")
def test(fn: Callable[P,None],*my_args: P.args,**my_kwargs: P.kwargs) -> None:
fn(*myargs,**my_kwargs)
然后对 test
的任何调用都将进行正确的类型检查。