在Python 3.7中声明函数作为返回类型

3
在Python 3.7中,我可以为函数和方法声明类型。我知道这是可选的,我可以不这样做。但是Python不是我的主要语言,这个特性对我很有帮助,使我的代码更易读。
但是我找不到闭包的正确类型。你能帮我吗?
def external_function(closure_param: str) -> ???:
    def inner_function(param: str) -> bool:
        # some code
    return inner_function

我在内置包typingtypes中搜索合适的类型,但没有找到合适的。


有没有人想要看一下我的新问题 https://stackoverflow.com/q/56518390/11279883? - undefined
1个回答

1
Python有一个叫做types的模块,其主要目的是存储在builtins.py中不可用的内置类型。您要返回的FunctionType类型位于types.py中。现在重写您的代码。
from types import FunctionType
def externalfunction(closure_param: str) -> FunctionType:
    def internalfunction(param: str) -> bool:
        # some code
        pass
    return internalfunction

1
不对,这不是正确的注释方式。尤其是因为它根本不是一个方法,而是一个普通函数。 - undefined
我将其编辑为FunctionType - undefined
是的,但你仍然应该使用typing.Callable并完全注释它的参数类型和返回类型。无论如何,这个问题是一个重复的问题。 - undefined
我终于找到了答案。这是来自typing模块的Callable类型。这是文档中的一句引用:“Callable类型;Callable[[int], str]是一个接受整数参数并返回字符串的函数。”。 - undefined
@Mark 我注意到你修改了我的帖子,你想看一下我的问题吗?https://stackoverflow.com/q/56518390/11279883 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接