python-3.x 带可选参数的类型提示回调函数(也称为带可选参数的Callable)

72qzrwbm  于 2022-12-24  发布在  Python
关注(0)|答案(1)|浏览(158)

如何指定一个带有可选参数的回调函数的类型?
例如,我有以下函数:

def getParam(param: str = 'default'):
  return param

我想将它作为回调函数传递,并将其用作Callable[[str], str] * 和 * Callable[[], str]

def call(callback: Callable[[<???>], str]):
  return callback() + callback('a')

我尝试过Python的Optional,但它不起作用,因为它仍然强制一个参数(即使值为None)存在。
作为参考,我基本上是在搜索以下TypeScript的等价物:

function call(callback: (a?: string) => string) {
  return callback() + callback('a');
}
k7fdbhmy

k7fdbhmy1#

www.example.com没有用于指示可选参数或关键字参数的语法https://docs.python.org/3/library/typing.html#typing.Callable
但是你可以用这样的东西

from typing import Protocol

class MyCallback(Protocol):
    def __call__(self, x: int =5): ...

def foo(callback: MyCallback):
    callback()  # <- IDE is fine with both of these lines
    callback(7)

相关问题