Skip to content

Instantly share code, notes, and snippets.

@iguoli
Last active October 28, 2017 08:26
Show Gist options
  • Save iguoli/7a744abb0f4b9e42d8c556e77909067d to your computer and use it in GitHub Desktop.
Save iguoli/7a744abb0f4b9e42d8c556e77909067d to your computer and use it in GitHub Desktop.
Python下划线命名

Python中的下划线命名

  • __name__
    双下划线开头双下划线结尾的是一些 Python 的“魔术”对象,如类成员的__init____del____add____getitem__等,以及全局的__file____name__等。Python官方推荐永远不要将这样的命名方式应用于自己的变量或函数,而是按照文档说明来使用。

  • __name
    名称(具体为一个方法名)前双下划线(__)的用法并不是一种惯例,对解释器来说它有特定的意义。Python中的这种用法是为了避免与子类定义的名称冲突。Python文档指出,“__spam”这种形式(至少两个前导下划线,最多一个后续下划线)的任何标识符将会被“_classname__spam”这种形式原文取代,在这里“classname”是去掉前导下划线的当前类名。例如下面的例子:

>>> class A(object): 
... def _internal_use(self): 
... pass 
... def __method_name(self): 
... pass 
... 
>>> dir(A()) 
['_A__method_name', ..., '_internal_use']
  • _name
    这个被常用于模块中,在一个模块中以单下划线开头的变量和函数被默认当作内部函数,如果使用 from a_module import * 导入时,这部分变量和函数不会被导入。不过值得注意的是,如果使用 import a_module 这样导入模块,仍然可以用 a_module._some_var 这样的形式访问到这样的对象。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment