python屬性重新賦值叫就是在類obj 生成對(duì)象A 的時(shí)候,進(jìn)行初始化,自動(dòng)調(diào)用了obj 的init函數(shù),聲明了一個(gè)對(duì)象A的私有變量,并對(duì)其賦值。
創(chuàng)新互聯(lián)從2013年成立,先為南川等服務(wù)建站,南川等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為南川企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
這時(shí)候的A.a就是訪問(wèn)了一個(gè)對(duì)象的私有變量。對(duì)其賦值,沒(méi)有調(diào)用任何其他方法,和b=“test”一樣,就是普通的對(duì)字符串賦值,這個(gè)時(shí)候,a就是一個(gè)對(duì)象A的一個(gè)私有變量。
題主你好,
python中變量賦值的語(yǔ)法為:
key = value
-----
舉例來(lái)說(shuō), 我給name賦值為張三:
上面可以看出, 在給name賦完值后, 在交互模式下, 直接輸入變量名name,就可以回顯變量name的值,張三.
*.需要注意的是, 如果是在腳本中寫的話, 變量賦值的語(yǔ)法不變(還是 name = "張三"), 但要想輸出變量name的值,就不能直接寫個(gè)name, 而要將變量名name作為print()等這樣的輸出函數(shù)的參數(shù)才可以:
a.在腳本中直接輸入變量名:
可以看到腳本執(zhí)行后, 并沒(méi)有輸出name的值.
b.將變量name作為print()函數(shù)的參數(shù):
可以看到當(dāng)將變量name作為print()函數(shù)的參數(shù),可以正常輸出變量name的值.
-----
希望可以幫到題主, 歡迎追問(wèn).
1. 函數(shù)賦值只是把函數(shù)名賦值給變量,并不是執(zhí)行函數(shù),有無(wú)返回值都可以;
例如:a = function
2. 如果把調(diào)用函數(shù)賦值給變量,才是函數(shù)返回值賦值給變量;
如果沒(méi)有返回值,賦值變量的值為None;
例如 a = function( params )
對(duì)于Python的初學(xué)者,在對(duì)象的使用過(guò)程中,由于對(duì)變量的賦值和對(duì)象的復(fù)制中的概念模糊,導(dǎo)致程序出錯(cuò)。
例如,下面的代碼:
輸出結(jié)果為:
a = [6,2,3,4,5],
b = [6,2,3,4,5],
c = [1,2,3,4,5]
a等于b?True
a等于c?True
a是b?True
a是c? False
可以看到,a,b, c所指向的對(duì)象的值都相同(a==b為True). a和b都是代表同一個(gè)對(duì)象(a is b為True)。當(dāng)我們通過(guò)變量b對(duì)該列表進(jìn)行修改時(shí),由于a也指向該列表,所以當(dāng)打印a,b時(shí),我們得到相同的值。 而a和c則是代表不同的對(duì)象(a is c為False),所以修改b所指向得列表不會(huì)改變c梭子鄉(xiāng)的列表的值.
在Python中,所有的變量都代表了對(duì)象,即便是簡(jiǎn)單的數(shù)字類型(int, float, bool),也是以對(duì)象的形式存在的。我們看下面的代碼:
輸出結(jié)果是:
a==b為True
a is b為True
可見(jiàn),a, b都是指向同一個(gè)對(duì)象。接下來(lái),進(jìn)行下面的操作,
輸出結(jié)果是:
a = 1, b = 2
a is b為False
與前面的列表不同,當(dāng)我們對(duì)b做修改時(shí),實(shí)際上是給b賦予了一個(gè)新生成的對(duì)象,對(duì)數(shù)值類型來(lái)說(shuō),所有的數(shù)值運(yùn)算都會(huì)創(chuàng)建一個(gè)數(shù)值對(duì)象,并將這個(gè)對(duì)象指定給變量。因此,a與b指向了不同的對(duì)象,數(shù)值也不同。
再回過(guò)頭來(lái)看列表對(duì)象,
我們知道,b是與a指向同一對(duì)象的變量,使用b對(duì)該對(duì)象進(jìn)行修改,與使用a對(duì)該對(duì)象進(jìn)行修改,效果是完全一樣的。如果我們需要需要一個(gè)與a完全相同又與a相互獨(dú)立的列表,那么就需要復(fù)制這個(gè)對(duì)象,也就是新建一個(gè)內(nèi)容和源對(duì)象相同的對(duì)象。
對(duì)于列表來(lái)說(shuō),最簡(jiǎn)單的復(fù)制方法是通過(guò)下標(biāo)索引的方式創(chuàng)建新的列表:
對(duì)于各種數(shù)據(jù)類型通用的對(duì)象拷貝復(fù)制,我們可以使用python內(nèi)建的copy模塊。
對(duì)于復(fù)雜對(duì)象(如嵌套列表)的復(fù)制,則需要注意區(qū)分淺拷貝和深拷貝。我們來(lái)看下面的代碼:
得到的結(jié)果是:
a[0] is b[0]為 True
a[0] is c[0]為 False
a = [[-1, 2, 3], [4, 5, 6]]
b = [[-1, 2, 3], [7, 8, 9]]
c = [[1, 2, 3], [4, 5, 6]]
a[1] is b[1]為False
從上面的代碼我們可以看到,copy函數(shù)為淺拷貝,只拷貝了對(duì)象的外層,而對(duì)象內(nèi)部所包含的對(duì)象仍然指向原有的對(duì)象。而deepcopy則為深拷貝,對(duì)象內(nèi)部的對(duì)象也進(jìn)行了復(fù)制。
以上我們對(duì)變量的賦值和對(duì)象的復(fù)制做了更加深入的分析。在具體的使用中,我們需要根據(jù)具體來(lái)決定使用賦值、淺拷貝、深拷貝。