单下划线”_”

Python中,通过单下划线“_”来实现模块级别的私有化,变量除外。约定以单下划线“_”开头的函数为模块私有的,也就是说“from moduleName import * ”将不会引入以单下划线”_“开头的函数。

例子

现在有一个模块 exampleexample.py,内容用如下,模块中一个变量名和一个函数名分别以“”开头:

  1. name = 'bruce'
  2. _tall = 180
  3. def call_for():
  4. print("execute call_for()")
  5. print('name is :',name)
  6. print('_tall is',_tall)
  7. def _call_for():
  8. print("execute _call_for()")
  9. print('name is :',name)
  10. #_call_for = _call_for()
  11. print('_tall is',_tall)
  • 调用脚本模块 example_example
  1. from example_example import *
  2. #调用不带下划线函数
  3. call_for()
  4. #调用不带下划线函数会报错
  5. _call_for()
  • Output:
  1. _tall is 180
  2. execute call_for()
  3. name is : bruce
  4. _tall is 180
  5. Traceback (most recent call last):
  6. File "xxx.py", line 6, in <module>
  7. _call_for()
  8. NameError: name '_call_for' is not defined