標籤:方法 地址 預設 直接 類對象 訪問 height 調用 ble
1.類 和對象:
1.類對象,執行個體對象 2.類成員,執行個體成員 3.類函數,執行個體函數 ---------- 需要理解之前的關係,能夠相互調用,作用範圍
問題:
#類內
#1.類方法中能否訪問 執行個體屬性? 不行
#2.類方法總訪問修改執行個體屬性 cls.country
#3.執行個體方法中能否訪問類屬性?修改類屬性? 可以,無效 self.county
#4.執行個體方法中訪問修改執行個體屬性 self.a
#類外
#1.執行個體對象能否訪問類屬性?修改類屬性? 可以,無效
#2.類對象能否訪問執行個體屬性? 不行
#3.執行個體對象能否訪問類方法? 可以,可以通過類方法修改類屬性
#4.類對象能否訪問執行個體方法? 不行
2.python的變數及儲存方式
(轉自http://www.cnblogs.com/Eva-J/p/5534037.html)
然後理解變數的賦值,淺拷貝,深拷貝
1.變數的賦值:
1.str的賦值
2.資料結構的賦值
2.淺拷貝:
淺拷貝只會copy一層當sourceLst列表發生變化,copyLst中儲存的lst記憶體位址沒有改變,所以當lst發生改變的時候,sourceLst和copyLst兩個列表就都發生了改變。這種情況發生在字典套字典、列表套字典、字典套列表,列表套列表,以及各種複雜資料結構的嵌套中,所以當我們的資料類型很複雜的時候,用copy去進行淺拷貝就要非常小心。。。
3.深拷貝:
深拷貝會完全複製原變數相關的所有資料,在記憶體中產生一套完全一樣的內容,在這個過程中我們對這兩個變數中的一個進行任意修改都不會影響其他變數
3.函數的參數:
- 1.普通參數:傳參時,需要按照函數定義的參數數量,及類型 進行傳參
- 2.預設參數:參數寫上預設值,且必須放在所有參數的最後
- 3.動態參數:
- def func1(*args) 接受多個參數,內部自動構造元組,序列前加*,會把傳入的參數構造為一個元組 注意:fun() argument after * must be an iterable, not int:數組、字串、列表都是iterable的
- def func2(**kwargs) 接收多個參數,內部自動構造字典,序列前加**,直接傳遞字典
def func3(*args,**kwargs):接受多個參數,既可以自動構造元組,又可以自動構造字典。
4.函數的返回:返回多個值,以元組的形式返回
例子:
def fun1(*arg):
print(arg)
a=[1,2,3,4,5]
fun1(*a)----> 輸出結果為:(1,2,3,4,5) 將列表a中的值分別傳入作為元組的元素
fun1(a)---- > 輸出結果為:(1,2,3,4,5],) 將列表a作為一個整體傳入作為元組的元素
def fun1(*arg):
print(arg)
b=[1,2,3,4,5]
c=‘anna‘
fun1(b,*a)----> 輸出結果為:(1,2,3,4,5,‘anna‘)
fun1(b,a)---- > 輸出結果為:([1,2,3,4,5],‘anna‘)
需要注意的是必須*args在前**kwargs在後,參數也是一樣。
python 痛點記錄