python基础知识_下划线
2021/9/9 22:36:19
本文主要是介绍python基础知识_下划线,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. 单前导下划线
-
单个下划线是一个Python命名约定,表示这个名称是供内部使用的。 它通常不由Python解释器强制执行,仅仅作为一种对程序员的提示。
-
如果使用通配符从模块中导入所有名称(from unittest import *),则Python不会导入带有前导下划线的名称(除非模块定义了覆盖此行为的
__all__
列表) -
常规导入(eg: from unittest import _fun)不受前导单个下划线命名约定的影响。
2. 单末尾下划线
- 单个末尾下划线(后缀)是一个约定,用来避免与Python关键字产生命名冲突。
3. 双前导下划线
- 双下划线前缀会导致Python解释器重写属性名称,以避免子类中的命名冲突。
class Test: def __init__(self): self.foo = 11 self._bar = 23 self.__baz = 23 >>> t = Test() >>> dir(t) ['_Test__baz', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_bar', 'foo'] 解释:__baz被解释器改写为'_Test__baz'。这样做是为了防止变量在子类中被重写 # 创建另一个扩展Test类的类,并尝试重写构造函数中添加的现有属性 class ExtendedTest(Test): def __init__(self): super().__init__() self.foo = 'overridden' self._bar = 'overridden' self.__baz = 'overridden' >>> t2 = ExtendedTest() >>> t2.foo 'overridden' >>> t2._bar 'overridden' >>> t2.__baz AttributeError: "'ExtendedTest' object has no attribute '__baz'" >>> dir(t2) ['_ExtendedTest__baz', '_Test__baz', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_bar', 'foo', 'get_vars'] >>> t2._ExtendedTest__baz 'overridden' 解释:__baz变成_ExtendedTest__baz以防止意外修改;
4. 双前导和双末尾下划线
-
python自带的有特殊意义的函数, 如
__init__对象构造函数,或__call__ --- 它使得一个对象可以被调用。
-
最好避免在自己的程序中使用以双下划线(“dunders”)开头和结尾的名称,以避免与将来Python语言的变化产生冲突。
5. 单下划线
-
“_”可作为占位符变量(临时变量);
-
表示由解释器评估的最近一个表达式的结果。
>>> 20 + 3 23 >>> _ 23 >>> print(_) 23 >>> list() [] >>> _.append(1) >>> _.append(2) >>> _.append(3) >>> _ [1, 2, 3]
6. 总结
模式 | 举例 | 含义 |
---|---|---|
单前导下划线 | _var | 命名约定,仅供内部使用。通常不会又python解释器强制执行(通配符导入除外),只作为程序员的提示。 |
单末尾下划线 | var_ | 按照约定使用以避免与python关键字的命名冲突,如class_ |
双前导下划线 | __var | 当在类上下文中使用时,触发“名称修饰”。由python解释器强制执行。如类Test中定义了__bar这个变量,最终会被解释为_Test__bar |
双前导和双末尾下划线 | __var__ | 表示python语言定义的特殊方法。避免在自己的属性中使用这种命名方式 |
单独下划线 | _ | 有时用作临时或无意义变量的名称(“不关心”)。也表示pyhont REPL中最近一个表达式的结果。 |
7. 参考链接
https://blog.csdn.net/tcx1992/article/details/80105645
这篇关于python基础知识_下划线的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-28Python编程基础教程
- 2024-12-27Python编程入门指南
- 2024-12-27Python编程基础
- 2024-12-27Python编程基础教程
- 2024-12-27Python编程基础指南
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型
- 2024-12-23使用python部署一个usdt合约,部署自己的usdt稳定币
- 2024-12-20Python编程入门指南