python中下划线的5种含义_python中的下划线含义

单下划线和双下划线在Python变量和方法名称中都有含义。其中一些含义仅仅是按照惯例,作为给程序员的提示,而另外一些则由Python解释器执行。

在本文中,主要讨论以下五种下划线模式和命名约定,以及它们如何影响Python程序的行为:

1.单前置下划线:_var

单下划线前缀是一个提示,即以单个下划线开头的变量或方法将用于内部使用。PEP 8中定义了这种约定。Python不像java对公共变量和私有变量有着严格的区分,单下划线前缀不会影响程序的行为。

class Test:

def __init__(self):

self.foo = 11

self._bar = 23

>>> t = Test()

>>> t.foo

11

>>> t._bar

23

可以看到,_bar没有阻止进入类的内部并获取相应的变量值,在Python中,一个下划线前缀只是一种约定,至少在变量和方法名中是这样。

但是,前导下划线确实影响从模块导入名称的方式。假设有一个模块叫my_module:

# This is my_module.py:

def external_func():

return 23

def _internal_func():

return 42

如果使用通配符进行导入my_module中所有名称(在PEB 8中建议避免使用通配符的导入方式),则Python不会导入带有前导下划线的名称(除非模块定义了覆盖此行为的__all__列表):

>>> from my_module import *

>>> external_func()

23

>>> _internal_func()

NameError: "name '_internal_func' is not defined"

而常规的导入方式不会受到单前导下划线约定的影响:

>>> import my_module

>>> my_module.external_func()

23

>>> my_module._internal_func()

42

总结就是:单下划线是一种Python命名约定,指示名称用于内部使用。Python解释器通常不会强制执行它,只是作为对程序员的一个提示。

你可能感兴趣的:(python中下划线的5种含义)