Python列表生成,集合,模組路徑問題,==和is,深淺拷貝,私有化,property的使用
列表生成式: range(3) --->[0,1,2] b=[i for i in range(10) if i%2==0] 只有在range(10)中且i%2==0 才能給了前面的i
集合set {11,22,33} 和字典類似 都用大括號 但裡面不是鍵值對 且元素不重複
a=[11,22,33,11,22] b=set(a) a=list(b) 實現了一個列表去重
sys.path.append("../") 模組的匯入路徑中添加當前路徑
修改了某個模組後需要重新匯入 from imp import * reload(test) 重新匯入載入test模組
a=[11,22,33]
b=[11,22,33]
a==b #True 判斷內容
a is b #False 判斷id(a)和id(b)
深拷貝和淺拷貝
指向相同的地址即為淺拷貝
import copy
c=copy.deepcopy(a) 拷貝a裡面所有的值到另一個空間 即指向的空間不同為深拷貝 深度拷貝是遞迴深度拷貝的,不管如何引用都可以拷貝出來作為單獨的空間中
c=copy.copy(a) 只拷貝指向a的地址到c中 ,且c和a是不同地址 但內容指向的是同一個地址 即只能拷貝第一層 (注意:如果a是不可變型別,那麼a 和c是同一個地址)
_x單前置下劃線,私有化屬性或方法 from somemodule import *禁止匯入,類物件和子類可以訪問
__num私有屬性其實也是可以訪問的 需要加上類名 本質上它變成了 _Test__num 可以通過t._Test__num呼叫
私有變數一般有get set方法 getNum() setNum()
property:
num=property(getNum,setNum)
這樣設定時候 可以通過直接賦值的方法給__num私有變數賦值 t.num=200 通過property給__num賦值200 Python直譯器內部自動呼叫get set方法
@property
def money(self.value):
return self.__money
@money.setter
def money(self.value): #money是提供給外界用的名字
self.__money=value
property的另一種用法 getter和setter有同樣的名字