Python下划线

文章目录

  • 单前导_var
    • 实例化类
    • 模块导入
      • 通配符导入
      • 常规导入
  • 单末尾var_
  • 双前导__var
    • 名称修饰
  • 双前导和双末尾__var__
  • 单下划线_

菜鸟教程

单前导_var

变量或方法仅供内部使用,但仅作为一种提示,通常不由解释器强制执行

实例化类

仍可访问

class Test:
   def __init__(self):
       self.foo = 11
       self._bar = 23

t=Test()
print(t.foo)
print(t._bar)

输出结果:
11
23

模块导入

# 名为myModule的模块
def external_func():
   return 23

def _internal_func():
   return 42

通配符导入

不可访问,不会导入带有前导下划线的名称,除非模块定义了覆盖此行为的__all__列表

from myModule import *
print(external_func())
print(_internal_func())

Python下划线_第1张图片

常规导入

仍可访问

import myModule
print(myModule.external_func())
print(myModule._internal_func())

输出结果:
23
42

单末尾var_

避免与关键字命名冲突

def new(a,class):
    pass

def new(a,class_):
    pass

Python下划线_第2张图片

双前导__var

触发名称修饰,解释器强制执行

名称修饰

解释器会重写属性名称,以便类扩展时不容易产生冲突

双前导和双末尾__var__

dunder(double underscore)
不会应用名称修饰,命名时最好避免,python保留了双前导和双末尾的名称用于特殊用途,比如__init__对象构造函数,__call__调用对象

单下划线_

临时或无意义的变量名称,默认将表达式结果赋予_,但若定义了变量_,那就相当于定义了一个变量_
Python下划线_第3张图片

你可能感兴趣的:(python,开发语言)