平時使用python遗菠,經(jīng)常會使用到的知識點联喘,可能懂得知道如何使用,但又沒有全面的了解舷蒲,下面總結(jié)下
一耸袜、if name == main作用
1】python中所有的模塊都有一個內(nèi)置name,這個屬性值取決于如何應(yīng)用這個模塊牲平;
2】把一個模塊當(dāng)程序運行堤框,如cmd中運行py文件,則name的值為默認(rèn)缺省值main
3】在項目程序中纵柿,可單獨運行某一個py文件
if name == main: #來判斷是否是直接運行的.py文件
main()
二蜈抓、包中的init.py文件作用
毋庸置疑,最基本就是體現(xiàn)昂儒,文件夾與包的區(qū)別沟使,不可刪除;此外還有2點
1】做包與模塊的初始化的工作渊跋;
2】進行批量導(dǎo)入包與模塊
from Root.Pack1 import *
模糊導(dǎo)入的*指代的包是由init文件中的all控制的腊嗡,也就是必須package才能使用模糊導(dǎo)入
3】 可以編寫Python代碼
(但不建議在init中寫代碼,盡量保證init.py簡單)
三拾酝、各種下劃線的理解
我們在定義一些變量與方法時燕少,經(jīng)常會用到下劃線_ ,各種下劃線_用處是怎樣蒿囤?
1】××× 開頭與結(jié)尾兩個下劃線客们,系統(tǒng)定義名字
比如初始化方法 init;還有如下這些,內(nèi)置好的魔法函數(shù)
2】__××× 開頭兩個下劃線底挫, 類中的私有變量名恒傻,
用于類的繼承,防止被子類重寫建邓,類的對象和類的子類對象也不能訪問
class Person():
def __init__(self):
self.name = "polo"
self.__age = 18
po = Person()
print(po.name)
print(po.__age)
print(po.__dir__()) # 查看這個對象的屬性盈厘,name不變,__age變成_Person__age
3】_××× 開頭一個下劃線
1)python中涝缝,_ 是有值的扑庞,指向最后一次執(zhí)行的表達(dá)式
2)定義變量與方法譬重,成為保護變量拒逮,只有類的對象和類的子類對象能訪問,不能通過import module from * 導(dǎo)入
def my_func():
print("a123")
def _my_func():
print("a12345")
#引用這個模塊臀规,分別執(zhí)行模塊中的方法
from test import *
my_func()
#結(jié)果:a123
_my_func()
#結(jié)果:報錯
此例子說明了_ 一個下劃線與 __ 兩個下劃線的區(qū)別:
只有類的對象和類的子類對象能訪問
#文件test_under.py中定義類
class Test:
def __init__(self):
self.name = 'lily'
self._pwd = 'a123' # 約定私有化
# self.__name = name # 將__兩個下劃線開頭的屬性進行自動轉(zhuǎn)換變成_類名__屬性名的形式
def say(self):
print(self.name)
def _mm(self):
print(self._pwd)
# 實例一個對象滩援,訪問兩個屬性和兩個方法
import test_under
Na = test_under.Test()
Na.name
Na._pwd
Na.say()
Na._mm()
#結(jié)果
'lily'
'a123'
'lily'
'a123'
4】×××_ 尾部下劃線
為了區(qū)分python關(guān)鍵詞如def class name pass,在它們的后面添加一個下劃線塔嬉,一般不建議