什么是用户控制的命名空间?

2024-04-27 21:27:40 发布

您现在位置:Python中文网/ 问答频道 /正文

引用Python PEP8

__double_leading_and_trailing_underscore__ : "magic" objects or attributes that live in user-controlled namespaces. E.g. __init__, __import__ or __file__. Never invent such names; only use them as documented.

我浏览了许多与Python中使用下划线相关的问题,我想我已经理解了大多数问题的答案(比如private属性、name mangling等)。我想我也理解了前面提到的双前导和尾随下划线的用法。我想它是为了保护函数,比如^ {CD3}},它与C++和java语言中的构造函数类似。在

但是,它不应该被称为community-controlled namespaces(我指的是Python社区)?作者说user-controlled namespaces是什么意思?事实上,其目的似乎恰恰相反:用户不应该(通常)玩弄这些名称空间。在


Tags: orandliveobjectsthatmagicattributesdouble
2条回答

用户控制的名称空间是指用户在Python中编程时控制存在的名称和它们的值的名称空间。换句话说,基本上是用户创建的api。它的意思是,你不应该设计一个依赖于你编出来的新的__doubleunderscore_names__的API。在

这里的“Namespace”不是指命名约定,而是指实际的编程范围。例如,每个函数的局部变量都有一个局部名称空间;一个模块的全局变量有一个全局名称空间;等等。用户绝对会使用这些名称空间—您将创建自己的变量、类、函数等。。它的意思是,你不应该编造新的看起来像魔术的名字,然后把它们放在你的名字空间里。在

用户控制的命名空间是与全局变量或对象属性类似的命名空间。Python程序员可以将他或她选择的任何名称放入这些名称空间中;社区的反对并不能阻止它。像__init__和{}这样的双dunder名称与程序员定义的普通名称一起存在于这些名称空间中。pep8建议用户不要创建看起来像标准魔术名称的非标准名称。在

相关问题 更多 >