在python中,變量賦值的語法比較簡單,語法就是 “變量名 = 對象”,由于python屬于動態語音,所以不需要像c、 java那樣在變量賦值時需要聲明變量的類型。
創新互聯公司專注于山陰企業網站建設,響應式網站開發,購物商城網站建設。山陰網站建設公司,為山陰等地區提供建站服務。全流程按需策劃設計,專業設計,全程項目跟蹤,創新互聯公司專業和態度為您提供的服務
c 變量賦值
int x = 1;
python 變量賦值
x = 1
y = "hello world!"
a = [1, 2]
b = ('a', 'b')
c = {"foo": "bar"}
python 變量賦值中,所涉及到的變量命名是有一定規則的:
1. 變量名只能包含字母、數字和下劃線。變量名可以字母或下劃線開頭,但不能以數字開頭,例如,可將變量命名為name_1,但不能將其命名為1_name
2.?變量名不能包含空格,但可使用下劃線來分隔其中的單詞。例如,變量名name_one可行,但變量名name one會引發錯誤。
3.?不要將Python關鍵字和函數名用作變量名,即不要使用Python保留用于特殊用途的單詞,如not、pass等。
4.?變量名應既簡短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好, 雖說簡短好,但是不能依照自己的意愿隨意簡寫,盡量使用大家約定俗成的簡寫,如果不是還不如寫全拼。
5. python 變量名中大小寫敏感,所以 NAME, Name, name 代表三個不同的表里名, 這里提一下就是慎用小寫字母l和大寫字母O,因給他們可能被人錯看成數字1和0;
再說變量賦值中賦予給變量的值,python中萬事皆對象,所以python中只要是對象就能給變量賦值。如:
x = 1 # x賦值為數字1;
x = sum # x賦值為內建求和函數sum;
python的賦值真實上說應該不是賦值,而更像是“引用”,如何理解“引用”呢,python中一直對象的生成是會在內存中分配給一個內存地址,這個內存地址可以使用id()方法去獲取,然后在變量賦值時,將變量直接引用該對象的內存地址,進而完成變量賦值,如:
x = 1, 賦值時x直接引用1所在內存的地址, y = x, 此時是y直接引用x的所指向的內存地址
python中有判斷變量的方法如 is() 和 ==,二者在判斷變量時是有區別的,is函數是判斷變量的內存地址是否相同,而 == 是判斷變量的值是否相同,舉例說明:
a = 1; b = 1.0
a is b? # False
a == b # True
小心python變量賦值的陷阱
看到上面的所述知道了python變量賦值實則是引用,引用的是對象的內存地址。所賦的值可以分兩類,一類是可變的,如列表,字典,集合;一類是不可變的,如字符串、元組。所以當對象為可變類型時就會出現一種情景,我們舉例說明:
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在進行調整時(添加了一個元素),x也跟著變動了,這進一步說明了,python中的變量賦值時引用,x,y 賦值時指向了同一處內存地址,所以當y變動時,x同樣也發送了變化,解決這中現象的方法可以是x, y = [1,2,3], [1,2,3]這樣賦值,雖說此時 x==y 是True,但是確實是2個不同的內存地址,所以 x is y 則是 False。或者可以使用copy模塊,實質是相同的,創建2個不同的內存地址,使其分離。
1、is是判斷兩個標識符是不是引用同一個對象,類似于id(a)=id(b),如果引用的是同一個對象則返回True,否則返回False。注意python中id()函數是獲取對象的內存地址。
2、isnot是判斷兩個標識符是不是引用自不同對象,類似id(a)。=id(b)。如果引用的不是同一個對象則返回結果True,否則返回False。
簡單來說,python中的is與is not運算符可判斷兩個對象是否為同一對象。
若為同一個對象,則對象1 is 對象2為True 。
反正,若非同一個對象,則對象1 is not 對象2為True
要理解Python中的is和is not運算符,首先需要知道Python中對象包含的三個基本要素,分別是:id(身份標識)、python type()(數據類型)和value(值)。
is和==(is not和!=)都是對對象進行比較判斷作用的。
但對對象比較判斷的內容并不相同。
拿is和==為例,
==是python標準操作符中的比較操作符,用來比較判斷兩個對象的value(值)是否相等,例如下面兩個字符串間的比較:
a = 'iplaypython.com'
b = 'iplaypython.com'
a == b
True
is也被叫做同一性運算符,這個運算符比較判斷的是對象間的唯一身份標識,也就是id是否相同。通過對下面幾個列表間的比較,你就會明白is同一性運算符的工作原理:
x = y = [4,5,6]
z = [4,5,6]
x == y
True
x == z
True
x is y
True
x is z
False
print id(x)
3075326572
print id(y)
3075326572
print id(z)
3075328140
可看出前三個例子都是True,而最后一個是False。
x、y和z的值是相同的,所以前兩個是True沒有問題。
至于最后一個為什么是False,看看三個對象的id分別是什么就會明白了。
==比較操作符:用來比較兩個對象是否相等,value做為判斷因素;
is同一性運算符:比較判斷兩個對象是否相同,id做為判斷因素。
同理,
!=比較操作符:用來比較兩個對象是否不等,value做為判斷因素;
is not同一性運算符:比較判斷兩個對象是否不同,id做為判斷因素。