python文件名的下划线前缀是什么?

DNB*_*ims 19 python naming-conventions prefix

cherryPy例如,有文件如:

  • __init__.py
  • _cptools.py

他们有什么不同?这是什么意思?

Mic*_*rny 24

__...__表示保留的Python 名称(文件名和其他名称).您不应使用双下划线表示法创建自己的名称; 如果您使用现有的,它们具有特殊功能.

在此特定示例中,__init__.py定义包的"主"单元; 它还会导致Python将特定目录视为包.它是您调用时使用的单位import cherryPy(并且cherryPy是目录).这在模块教程中进行了简要说明.

另一个例子是__eq__为类提供相等比较的方法.您可以直接调用这些方法(==例如,在使用运算符时隐式使用它们); 但是,较新的Python版本可能会定义更多此类方法,因此您不应该创建自己的__-names,因为它们可能会发生碰撞.您可以在数据模型文档中找到这些方法的详细列表.

_...通常用作"内部"名称.例如,_不应直接使用以...开头的模块; 类似地,_所谓的方法是私人的等等.这只是一个惯例,但你应该尊重它.

  • 您没有明确禁止发明自己的名字.*不鼓励*因为语言将来可能会添加更多此类名称,因此命名空间是保留的.为自己的项目使用`__...__`名称的风险由您自行承担. (4认同)
  • @MartijnPieters:好的,用"不应该"代替. (2认同)

ver*_*ald 13

"Python代码样式指南 - 描述:命名样式"中详细介绍了这些和其他命名约定

简述:

  • __double_leading_and_trailing_underscore__:生成在用户控制的命名空间中的"魔术"对象或属性.例如__init__,__import____file__.不要发明这样的名字; 只记录使用它们.
  • _single_leading_underscore:弱"内部使用"指标.例如from M import *,不会导入名称以下划线开头的对象.


jav*_*vex 8

__init__.py是一个特殊文件,当存在于文件夹中时,将该文件夹转换为模块.导入模块后,__init__.py执行.另一个只是一个命名约定,但我猜这会说你不应该直接导入该文件.

看看这里:6.4.套餐为如何创建模块的说明.

一般规则:如果Python中的任何内容都是namend,__anything__那么它就是特殊的东西,你应该在使用它之前阅读它(例如魔术函数).