免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

python中賦值函數(shù) python里面賦值

淺談python中的變量賦值

在python中,變量賦值的語法比較簡單,語法就是 “變量名 = 對象”,由于python屬于動態(tài)語音,所以不需要像c、 java那樣在變量賦值時需要聲明變量的類型。

創(chuàng)新互聯(lián)是網(wǎng)站建設(shè)技術(shù)企業(yè),為成都企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、成都網(wǎng)站制作,網(wǎng)站設(shè)計,網(wǎng)站制作,網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。10年品質(zhì),值得信賴!

c 變量賦值

int x = 1;

python 變量賦值

x = 1

y = "hello world!"

a = [1, 2]

b = ('a', 'b')

c = {"foo": "bar"}

python 變量賦值中,所涉及到的變量命名是有一定規(guī)則的:

1. 變量名只能包含字母、數(shù)字和下劃線。變量名可以字母或下劃線開頭,但不能以數(shù)字開頭,例如,可將變量命名為name_1,但不能將其命名為1_name

2.?變量名不能包含空格,但可使用下劃線來分隔其中的單詞。例如,變量名name_one可行,但變量名name one會引發(fā)錯誤。

3.?不要將Python關(guān)鍵字和函數(shù)名用作變量名,即不要使用Python保留用于特殊用途的單詞,如not、pass等。

4.?變量名應(yīng)既簡短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好, 雖說簡短好,但是不能依照自己的意愿隨意簡寫,盡量使用大家約定俗成的簡寫,如果不是還不如寫全拼。

5. python 變量名中大小寫敏感,所以 NAME, Name, name 代表三個不同的表里名, 這里提一下就是慎用小寫字母l和大寫字母O,因給他們可能被人錯看成數(shù)字1和0;

再說變量賦值中賦予給變量的值,python中萬事皆對象,所以python中只要是對象就能給變量賦值。如:

x = 1 # x賦值為數(shù)字1;

x = sum # x賦值為內(nèi)建求和函數(shù)sum;

python的賦值真實上說應(yīng)該不是賦值,而更像是“引用”,如何理解“引用”呢,python中一直對象的生成是會在內(nèi)存中分配給一個內(nèi)存地址,這個內(nèi)存地址可以使用id()方法去獲取,然后在變量賦值時,將變量直接引用該對象的內(nèi)存地址,進而完成變量賦值,如:

x = 1, 賦值時x直接引用1所在內(nèi)存的地址, y = x, 此時是y直接引用x的所指向的內(nèi)存地址

python中有判斷變量的方法如 is() 和 ==,二者在判斷變量時是有區(qū)別的,is函數(shù)是判斷變量的內(nèi)存地址是否相同,而 == 是判斷變量的值是否相同,舉例說明:

a = 1; b = 1.0

a is b? # False

a == b # True

小心python變量賦值的陷阱

看到上面的所述知道了python變量賦值實則是引用,引用的是對象的內(nèi)存地址。所賦的值可以分兩類,一類是可變的,如列表,字典,集合;一類是不可變的,如字符串、元組。所以當(dāng)對象為可變類型時就會出現(xiàn)一種情景,我們舉例說明:

x = [1, 2, 3]

y = x

print x == y? ? # True

print x is y? ? # True

print x? ? ?# [1, 2, 3]

print y? ? ?# [1, 2, 3]

y.append(4)

print x? ? # [1, 2, 3, 4]

print y? ? # [1, 2, 3, 4]

可以看到y(tǒng)在進行調(diào)整時(添加了一個元素),x也跟著變動了,這進一步說明了,python中的變量賦值時引用,x,y 賦值時指向了同一處內(nèi)存地址,所以當(dāng)y變動時,x同樣也發(fā)送了變化,解決這中現(xiàn)象的方法可以是x, y = [1,2,3], [1,2,3]這樣賦值,雖說此時 x==y 是True,但是確實是2個不同的內(nèi)存地址,所以 x is y 則是 False。或者可以使用copy模塊,實質(zhì)是相同的,創(chuàng)建2個不同的內(nèi)存地址,使其分離。

python屬性重新賦值叫什么

python屬性重新賦值叫就是在類obj 生成對象A 的時候,進行初始化,自動調(diào)用了obj 的init函數(shù),聲明了一個對象A的私有變量,并對其賦值。

這時候的A.a就是訪問了一個對象的私有變量。對其賦值,沒有調(diào)用任何其他方法,和b=“test”一樣,就是普通的對字符串賦值,這個時候,a就是一個對象A的一個私有變量。

Python的賦值與復(fù)制

對于Python的初學(xué)者,在對象的使用過程中,由于對變量的賦值和對象的復(fù)制中的概念模糊,導(dǎo)致程序出錯。

例如,下面的代碼:

輸出結(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所指向的對象的值都相同(a==b為True). a和b都是代表同一個對象(a is b為True)。當(dāng)我們通過變量b對該列表進行修改時,由于a也指向該列表,所以當(dāng)打印a,b時,我們得到相同的值。 而a和c則是代表不同的對象(a is c為False),所以修改b所指向得列表不會改變c梭子鄉(xiāng)的列表的值.

在Python中,所有的變量都代表了對象,即便是簡單的數(shù)字類型(int, float, bool),也是以對象的形式存在的。我們看下面的代碼:

輸出結(jié)果是:

a==b為True

a is b為True

可見,a, b都是指向同一個對象。接下來,進行下面的操作,

輸出結(jié)果是:

a = 1, b = 2

a is b為False

與前面的列表不同,當(dāng)我們對b做修改時,實際上是給b賦予了一個新生成的對象,對數(shù)值類型來說,所有的數(shù)值運算都會創(chuàng)建一個數(shù)值對象,并將這個對象指定給變量。因此,a與b指向了不同的對象,數(shù)值也不同。

再回過頭來看列表對象,

我們知道,b是與a指向同一對象的變量,使用b對該對象進行修改,與使用a對該對象進行修改,效果是完全一樣的。如果我們需要需要一個與a完全相同又與a相互獨立的列表,那么就需要復(fù)制這個對象,也就是新建一個內(nèi)容和源對象相同的對象。

對于列表來說,最簡單的復(fù)制方法是通過下標(biāo)索引的方式創(chuàng)建新的列表:

對于各種數(shù)據(jù)類型通用的對象拷貝復(fù)制,我們可以使用python內(nèi)建的copy模塊。

對于復(fù)雜對象(如嵌套列表)的復(fù)制,則需要注意區(qū)分淺拷貝和深拷貝。我們來看下面的代碼:

得到的結(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ù)為淺拷貝,只拷貝了對象的外層,而對象內(nèi)部所包含的對象仍然指向原有的對象。而deepcopy則為深拷貝,對象內(nèi)部的對象也進行了復(fù)制。

以上我們對變量的賦值和對象的復(fù)制做了更加深入的分析。在具體的使用中,我們需要根據(jù)具體來決定使用賦值、淺拷貝、深拷貝。

當(dāng)前標(biāo)題:python中賦值函數(shù) python里面賦值
URL地址:http://newbst.com/article48/doihghp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名Google網(wǎng)站制作手機網(wǎng)站建設(shè)靜態(tài)網(wǎng)站用戶體驗

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)