python之下划線的命名規則以及作用


前言

1、前后各有兩個下划線,說明是類的內置方法,用於操作符重載等用途,自己寫的函數避免使用前后兩個下划線。

【變量名__xxx__對Python來說有特殊含義,像__self__,__class___,代表自身等,系統定義的,有特殊含義的,你可以覆蓋它,在里面寫一些自定義初始化的一些東西】

2、前面有兩個下划線,表示偽私有方法,不能在類外用原始名字直接調用。

3、前面一個下划線,表示自己寫的特殊用途的方法。

作用

①單下划線用於python解釋器,表示上一次的執行結果

即使不把 Python 用於編程,也可以把它用作智能計算器,下划線保存上次的計算結果,在計算時相當方便:

②代碼中一個獨立的下划線,表示這個變量不重要

一個獨立的下划線,它也是一個變量名;只不過它比較特殊,當你使用下划線作為變量名時,就代表你告訴大家,這個變量不重要,僅僅占個位置,可以忽略,后面不會再使用它。

當然了,這只是一種約定俗成,你要是不遵守也是可以的,畢竟在后面還可以通過下划線來獲取這個變量的值。

例如:

for i, _ in [(1, 2), (3, 4)]:
    print(i)

上面的代碼表示我們只需要列表內部元組的第一個,第二個其實賦值給了下划線,雖然后面你可以通過下滑線來取到值,但是強烈建議你不要這么做,這違反了約定。

③類的內部,雙下划線作為變量名或函數名的開頭,表示私有

私有變量或函數,只能在類的內部來使用,不可在外部訪問或更改;

比如,在 module_b.py 中有一個類 A,類 A 有一個雙下划線開頭的變量名:

class A:
    __private_var = 1000

    def __init__(self) -> None:
        self.__private_var2 = 2000
        self.var3 = 3000

當我們在另一個文件中引用 A 時,就無法訪問到私有變量:

import module_b

if __name__ == '__main__':
    a = module_b.A()
    print(a.__private_var)

報錯:

當然了,如果你一定要訪問,也是可以的,只需在私有變量前加個 _類名 ,比如上面的代碼中改為 print(a._A__private_var) 就可以正確打印1000。

例如:

class A:
    __private_var = 1000

    def __init__(self) -> None:
        self.__private_var2 = 2000
        self.var3 = 3000


if __name__ == '__main__':
    a = A()
    print(a._A__private_var) # 1000

不能直接訪問 __private_var  是因為 Python 解釋器對外把 __private_var  變量改成了 _A__private_var :

有些時候,你會看到以一個下划線開頭的實例變量名,比如 _name,這樣的實例變量外部是可以訪問的,但是,按照約定俗成的規定,當你看到這樣的變量時,意思就是,“雖然我可以被訪問,但是,請把我視為私有變量,不要隨意訪問”。

Python 本身沒有任何機制阻止你干壞事,一切全靠自覺。

④雙下划線開頭和結尾的方法,是魔術方法

比如常見的  __init__ ,  __dict__ ,  __dir__ ,  __doc__ ,  __eq__  等等。

具體可以閱讀如何寫出令人驚嘆的Python類

⑤作為變量名中間的一部分

相比駝峰命名,這叫做蛇形命名,比如user_name。

⑥作為數字中間的一部分,更易讀

print(10_000_000)  # 10000000

print(1_280_500_000 == 1280500000)  # True

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM