gpt4 book ai didi

python - .pyc 文件是否包含类型提示信息?

转载 作者:太空宇宙 更新时间:2023-11-04 00:16:49 25 4
gpt4 key购买 nike

我假设标准库类型提示支持全部基于阅读普通源代码,就像 inspect 对某些事情所做的那样,但我查看了 typing.py在标准库中,编译器似乎确实在对象本身上存储了类型提示信息。

所以,如果我这样做:

def myfunc(a: int, b:int): -> str
return "{a} + {b} = {a+b}"

然后将其编译为 .pyc 文件,类型信息是否会保留,以便我提供 .pyc 文件的人可以使用 typing.get_type_hints() 之类的东西来访问它? (假设我有正当理由只分发 .pyc。)

最佳答案

您已经在这里回答了您的问题:

但我查看了标准库中的 typing.py,似乎编译器确实在对象本身上存储了类型提示信息。

这意味着键入信息不会丢失并与您的其余代码一起编译,这是一个明显的行为。您可以通过从您的 python 文件创建一个 .pyc 文件然后导入已编译的模块并按如下方式对其进行测试来简单地对其进行测试。另请注意,您的代码中存在语法错误。您应该将 : 移到 -> str:

之后
In [38]: import py_compile

In [39]: py_compile.compile('ex.py')
Out[39]: '__pycache__/ex.cpython-35.pyc'

In [40]: cd __pycache__/
/home/kasra/Desktop/__pycache__

In [41]: import ex

In [42]: ex.myfunc
Out[42]: <function ex.myfunc(a:int, b:int) -> str>

In [43]: import typing

In [44]: typing.get_type_hints(ex.myfunc)
Out[44]: {'a': int, 'b': int, 'return': str}

关于python - .pyc 文件是否包含类型提示信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50631426/

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