当前位置: 首页 > 面试题库 >

(任何)python模块的类型提示是什么?

云项禹
2023-03-14
问题内容

我想为模块(类“模块”)添加(Python3)类型提示。该typing包不提供一个,并且types.ModuleType()是返回模块对象为特定名称的构造器。

例:

import types
def foo(module: types.ModuleType):
   pass

至少在PyCharm中导致“在types.pyi中找不到引用ModuleType”。

请注意,使用Python输入模块类型不会回答我的问题,因为它不能解释ModuleType既是构造函数又是类型,如下所示。


问题答案:

并且types.ModuleType()是构造函数。

没关系 types.ModuleType就像strintare一样,仍然是对类型的引用。不需要 通用
Module[typehint]注释,因此types.ModuleType您在这里使用的注释也是如此。

例如,官方的Python排版项目为以下项提供了类型提示注释sys.modules

from types import FrameType, ModuleType, TracebackType

# ...

modules: Dict[str, ModuleType]

不要被这里的名字弄糊涂了;types.ModuleType是对模块类型的引用。它不是单独的工厂功能或其他功能。CamelCase名称遵循该模块的约定,您可以使用该引用,因为类型对象不能作为内置对象使用。该types模块的值赋给type(sys)的名称。

如果PyCharm在查找types.ModuleType存根时遇到问题,则可能是PyCharm本身存在问题(错误),或者当前捆绑的存根已过时,或者您使用了不完整的分页集。有关如何使用自定义存根提供新集合的信息,请参阅PyCharm文档。

如果这不起作用,则可能是PyCharm中处理 导出
类型提示概念的错误。Typeshed当前在单独的模块中定义ModuleType类型提示,然后使用语法将其导入到types.pyi存根文件中from module import name as name。PEP
484
指出, 除非 使用以下as语法,
否则 导入的类型提示不属于存根。

除非导入使用import ... as ...表格或等效from ... import ... as ...表格,否则导入到存根中的模块和变量不视为已从存根中导出。

PyCharm可能尚未正确处理此类情况。



 类似资料:
  • 问题内容: 类型提示是Python 3.5中讨论最多的功能之一。 的一个例子类型提示中提到的这篇文章和这一个,同时还提负责任地使用类型提示。有人可以解释更多有关它们的信息,何时使用以及何时不使用? 问题答案: 我建议阅读PEP 483和PEP 484和观看该演示由Guido的类型提示。 简而言之:类型提示实际上是单词的意思,你可以提示所使用的对象的类型。 由于Python 的动态特性,推断或检查所

  • 问题内容: 在PEP 484中 ,包含模块的类型提示已添加到Python 3中。在Python 2中有什么方法可以做到这一点?我能想到的就是有一个装饰器来添加到检查类型的方法中,但这将在运行时失败,并且不会像提示所允许的那样被较早地捕获。 问题答案: 根据 Python 2.7的建议语法和 定义类型提示的PEP 484中的 跨代码 ,存在与Python 2.7兼容的另一种语法。但是,它不是强制性的

  • 问题内容: 我正在使用以下方式动态加载Python模块 有人可以告诉我什么是模块类型的正确类型注释。该模块不包含一个模块,在其他地方也找不到答案。 问题答案: 您正在寻找。

  • 问题内容: 该模块的Python帮助正在讨论冻结的模块。它是什么? http://docs.python.org/library/imp.html#imp.PY_FROZEN 问题答案: 该链接详细说明了Python Freeze实用工具:http : //wiki.python.org/moin/Freeze 简而言之,它创建了可移植版本的python脚本,该脚本带有自己的内置解释器(基本上像二

  • 问题内容: 我刚刚在PEP 484中看到以下示例: 不出所料,这在Python 2中不起作用: 但是,它适用于Python 3: 这是出乎意料的。如下面的示例所示,它实际上还没有检查类型(运行,但不会引发异常): 似乎在之后必须是一个函数的名称,但是该函数似乎被忽略了: 之后的名称似乎也是如此。 这种类型的提示语法是否还使用了其他内容(例如Java Modeling Language使用注释)?何

  • 问题内容: 我想向函数添加类型提示,该函数将接受带有方法的任何对象。例如,在 我不想限制为特定类型,例如或。只要它支持,它就是的适当参数。如何在没有不必要限制的情况下注释其类型? 编辑:显然,PyCharm可以在许多常见情况下得出适当的提示,但在我的实际用例中却不能。我无法发布代码,因为它是用于工作的,而且我找不到PyCharm失败的非专有最小示例。无论如何,原始问题不会引用PyCharm,它仍然