类型别名的格式指南

303*_*303 9 python python-3.10

根据 PEP8 风格指南,格式化类型别名 \xe2\x80\x94 的名称的正确方法是什么?

\n
# mymodule.py\nfrom typing import TypeAlias\n\nmytype: TypeAlias = int\n\ndef f() -> mytype:\n    return mytype()\n\ndef g() -> mytype:\n    return mytype()\n
Run Code Online (Sandbox Code Playgroud)\n

应该mytype格式化,CapWords因为它引入了类似于创建新类的新类型?或者,应该mytype全部大写格式化,因为它的处理方式与常量类似?

\n

有没有办法区分在程序的整个生命周期中保持不变(常量)的类型别名和可以更改的类型别名(类似于Final常量的注释)?

\n

另外,应该mytype用下划线作为前缀(如_mytype)以指示类型别名不应在该模块之外使用?

\n

Bro*_*ark 7

PEP 风格指南没有关于如何格式化 es 的任何明确指导TypeAlias。该指南确实包含一些有关类型变量的规则,但这并不完全是您所要求的。


我能找到的下一个最佳资源是Google 的 Python 样式指南,它恰好包含一些有关如何命名TypeAliases 的指导:

3.19.6 类型别名

您可以声明复杂类型的别名。别名的名称应大写。如果别名仅在本模块中使用,则应为 _Private。

例如,如果模块名称和类型名称一起太长:

_ShortName = module_with_long_name.TypeWithLongName
ComplexMap = Mapping[str, List[Tuple[int, int]]]
Run Code Online (Sandbox Code Playgroud)

其他示例包括复杂的嵌套类型和函数的多个返回变量(作为元组)。

MyType在此情况下,如果跨多个模块使用,或者_MyType仅在声明它的模块中使用,则类型别名的名称应该为。


话虽如此,请记住与现有代码库的一致性是最重要的。正如PEP 风格指南所述:

风格指南是关于一致性的。与本风格指南的一致性很重要。项目内的一致性更为重要。一个模块或功能内的一致性是最重要的。