Python 函数前的下划线
Posted SinHao22
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 函数前的下划线相关的知识,希望对你有一定的参考价值。
目录
1. 函数前的下划线的分类
Python函数前的下划线分为单下划线和双下划线两种:
# 单下划线
def _add():
...
return
# 双下划线
def __add():
...
return
2. 两种下划线的区别
种类 | 区别 |
---|---|
单下划线:_add() | 是一种私有函数的命名约定,即提示程序员该函数只能在类或者该文件内部使用,但实际上也可以在外部使用。 |
双下划线__add() | 私有函数,只能在内部使用 |
但是,实际上在使用时,类和文件中的私有函数又有区别。(其实文件中没有私有函数这种说法,只是我类别着类里的私有函数概念来说了。)
例1:只能在类内部使用私有函数
class Compute:
def __init__(self, a, b):
self.a = a
self.b = b
def add(self):
print("******** add ********")
print(f"self.a + self.b = self.a + self.b")
# 单下划线,提示程序员该函数只能在类内部使用
def _mul(self):
print("******** _mul ********")
print(f"self.a x self.b = self.a * self.b")
# 双下划线,私有函数
def __div(self):
print("******** __div ********")
print(f"self.a / self.b = self.a / self.b")
def test(self):
print("******** test ********")
self.add()
self._mul()
self.__div()
if __name__ == '__main__':
com = Compute(10, 5)
com.add()
com._mul()
com.test()
com.__div()
结果:
我们可以看到,可以在外部使用_mul()函数,但不可以使用__div()函数。
例2:只能在文件中使用私有函数
我们在utils这个python package下创建add.py,其中包含以下代码:
# add.py
def add(a, b):
print("******** add ********")
print(f"a + b = a+b")
return
def __add(a, b):
print("******** __add ********")
print(f"a + b = a + b")
return
def _add(a, b):
print("******** _add ********")
print(f"a + b = a + b")
return
在main.py中包含以下代码:
from utils.add import *
if __name__ == '__main__':
add(1, 2)
_add(3, 4)
__add(5, 6)
运行结果如下:
所以从外部既无法访问_add也无法访问__add()。
以上是关于Python 函数前的下划线的主要内容,如果未能解决你的问题,请参考以下文章
Swiftui 中 init() 中变量前的下划线是啥意思?