gpt4 book ai didi

python - 如何在 python 注释中指定输入和输出数据类型?

转载 作者:太空狗 更新时间:2023-10-29 17:25:01 24 4
gpt4 key购买 nike

我见过几种标准,用于编写关于函数在 Python 中期望和返回的数据类型的注释。是否就哪一个是最佳实践达成共识?

http://www.python.org/dev/peps/pep-3107/中的新功能吗?我应该为此开始使用什么?

最佳答案

函数注解没有特定用途,它们可以用于任何事情。

可以编写工具来从注释中提取信息并执行任何您想要的操作,包括检查类型或生成文档。但是 python 本身不会对这些信息做任何事情。您可以用于完全不同的目的,即提供将在参数上调用的函数或声明一串可能的返回值。

注解可以是任何对象:

def somefunc(param1: "string annotation", 
param2: 151631,
param3: any_object): -> "some information here":

您可以使用以下方法检索对象:

print (somefunc.func_annotations)
{'param1': "string annotation",
'param2': 151631,
'param3': <object any_object>,
'return': "some information here"}

PEP 提供的用例建议:

  • 提供打字信息
    • 类型检查
    • 让 IDE 显示函数期望和返回的类型
    • 函数重载/泛型函数
    • 外语桥梁
    • 适应
    • 谓词逻辑函数
    • 数据库查询映射
    • RPC 参数编码
  • 其他信息
    • 参数和返回值的文档

由于函数注解语法太新了,实在是没有用在任何生产工具上。

我建议使用其他方法来记录这一点。我使用 epydoc 生成我的文档,它可以从文档字符串中读取参数类型信息:

def x_intercept(m, b):
"""
Return the x intercept of the line M{y=m*x+b}. The X{x intercept}
of a line is the point at which it crosses the x axis (M{y=0}).

This function can be used in conjuction with L{z_transform} to
find an arbitrary function's zeros.

@type m: number
@param m: The slope of the line.
@type b: number
@param b: The y intercept of the line. The X{y intercept} of a
line is the point at which it crosses the y axis (M{x=0}).
@rtype: number
@return: the x intercept of the line M{y=m*x+b}.
"""
return -b/m

这个例子来自epydoc's website .它可以生成多种格式的文档,并可以从您的类和调用配置文件生成良好的图表。

关于python - 如何在 python 注释中指定输入和输出数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/487184/

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