python中的變數和物件
阿新 • • 發佈:2019-02-20
文章標題:Python學習筆記(五)Python動態型別和引用
因為自己對於python中的引用型別有些混,加之看到了上面的文章中的連結,有了一些想法,就寫了下來。
if __name__ == "__main__": a = 3 # 賦值操作 # 建立了一個物件,這個物件是一個int物件,這個int物件的值為3, # (如果變數a尚未被建立的話),建立了一個變數a, # 將變數a和int物件(其值為3)關聯起來.此時,變數a指向了記憶體中的一個int物件(其值為3) a *= 2 # 乘法運算+賦值操作 # 建立了一個int物件(其值為2), # 找到變數a指向的物件(int物件,其值為3), # (乘法運算)將int物件(其值為3)和int物件(其值為2)做乘法運算,得到(創建出了)一個新的int物件(其值為6), # (賦值操作)將變數a和這個新的int物件(其值為6)關聯起來.此時,變數a指向了記憶體中的一個int物件(其值為6) a = "qwert" # 賦值操作 # 建立了一個物件,這個物件是一個str物件,這個str物件的值為"qwert" # 將變數a和str物件(其值為"qwert")關聯起來.此時,變數a指向了記憶體中的一個str物件(其值為"qwert") b = a # 賦值操作 # (如果變數b尚未被建立的話),建立了一個變數b, # 將變數b和"變數a指向的物件"關聯起來,此時變數a和變數b指向了記憶體中的同一個物件 b = b + "123" # 加法運算+賦值操作 # 找到變數b指向的物件(str物件,其值為"qwert") # 將str物件(其值為"qwert")和str物件(其值為"123")做str.__add__運算,得到一個新的str物件(其值為"qwert123") # 將變數b和這個新的str物件(其值為"qwert123")關聯起來. # 此時,變數b指向了記憶體中的一個str物件(其值為"qwert123"),變數a指向了記憶體中的另一個str物件(其值為"qwert") a = [1, "str"] # 建立了一個list物件,其值為[1, "str"], # 將變數a指向記憶體中的一個list物件(其值為[1, "str"]), b = a # 將變數b和"變數a指向的物件"關聯起來,此時變數a和變數b指向了記憶體中的同一個物件 b.append("obj") # 找到變數b指向的物件(list物件,其值為[1, "str"]) # 呼叫這個物件的append方法,將str物件(其值為"obj")新增到這個物件裡面.此時,這個物件因為append方法該變了自己,這個list物件變成了[1, "str", "obj"] # 因為變數a和變數b指向了同一個物件,但是這個物件被(自己的成員函式)改變了, # 所以,變數a改變了,(變數a指向的記憶體中的物件改變了) # 所以,變數b改變了,(變數b指向的記憶體中的物件改變了) print(b) # [1, 'str', 'obj'] print(a) # [1, 'str', 'obj'] # 建立了一個物件,這個物件的值,在建立之後,絕對不會再被改變,這樣的類有int,float,str,等 # 建立了一個物件,這個物件還可以被自己的成員函式改變,這樣的類有list,dict,array,bytearray,等,超級多, # 對於tuple,一個tuple被創建出來之後,它裡面的那些個item不可以增加和減少了,但是item自身是可以被自己的資料成員改變的, testTuple = (1, "str", [3.14, True, None], bytearray("qwert", encoding="utf_8")) print("初始化後的tuple=", testTuple, sep="") try: testTuple[0] = 3 except TypeError as e: print(e) finally: pass testTuple[2].append("obj") testTuple[3].append(49) print("修改後的tuple=", testTuple, sep="") import sys sys.exit(0)
完。