gpt4 book ai didi

python - 如何使用 *args 和 **kwargs 注释可调用对象?

转载 作者:行者123 更新时间:2023-12-04 11:08:32 24 4
gpt4 key购买 nike

我有一个返回函数的函数。我想找到一个合适的类型注释。但是,返回的函数有*args*kwargs .在 Callable[[Parameters???], ReturnType] 中是如何注释的?
例子:

from typing import Callable
import io
import pandas as pd

def get_conversion_function(file_type: str) -> Callable[[io.BytesIO, TODO], pd.DataFrame]:
def to_csv(bytes_, *args, **kwargs):
return pd.read_csv(bytes_, **kwargs)
if file_type == "csv":
return to_csv

最佳答案

据我所知,python 的typing` 不允许像typing.Callable 的文档中所述那样直接执行。 :

There is no syntax to indicate optional or keyword arguments; such function types are rarely used as callback types. Callable[..., ReturnType] (literal ellipsis) can be used to type hint a callable taking any number of arguments and returning ReturnType.


但是你可以使用 mypy extensions像这样:
from typing import Callable
from mypy_extensions import Arg, VarArg, KwArg

def foo(a: str, *args: int, **kwargs: float) -> str:
return 'Hello, {}'.format(a)

def bar() -> Callable[[Arg(str, 'a'), VarArg(int), KwArg(float)], str]:
return foo

关于python - 如何使用 *args 和 **kwargs 注释可调用对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62809562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com