python命名中下劃線的含義

         python不只用奇特的空格表示代碼塊,還用變量和函數命名中的下劃線來表示一些特殊含義,如今總結以下:python

一、_單下劃線開頭:弱「內部使用」標識,如:「from M import *」,將不導入全部如下劃線開頭的對象,包括包,模塊、成員。程序員

二、單下劃線結尾__:只是爲了不與python關鍵字的命名衝突。函數

三、__雙下劃線開頭:模塊內的成員,表示私有成員,外部沒法直接調用。spa

四、__雙下劃線開頭雙下劃線結尾__:指那些python類中的特殊函數或屬性,如__name__,__doc__,__init__,__import__,__file__,__setattr__,__getattr__,__dict__等,本身寫變量和函數、方法名不推薦這樣的方式。.net

       另外,python中沒有像C++、Java那樣嚴格的成員域限制,__雙下劃線開頭成員標識是類私有成員,可是其實是僞私有,能夠經過其餘途徑直接訪問,好比:命令行

class T(object):
    def __init__(self):
        self.__name = 'Kitty'
t = T()
print t.__name
        直接訪問是會報錯的(可是命令行方式下居然訪問成功了,不曉得爲何),可是換一種方式:
print t._T__name
       這樣就能訪問成功,因此有人說這種實現是python靈活性的體現,雙下劃線開頭其實只是一種讓程序員遵照的命名規範。其中的t._T__name是python裏私有變量軋壓(Private name mangling)技術,具體能夠參考http://blog.csdn.net/carolzhang8406/article/details/6859480
相關文章
相關標籤/搜索