Python中的變量是用來表示一個(gè)值的標(biāo)識(shí)符。變量代表了計(jì)算機(jī)內(nèi)存中的一個(gè)地址。變量允許在程序中訪問其他對(duì)象,調(diào)用函數(shù)或執(zhí)行其他運(yùn)算。
變量是Python中的標(biāo)識(shí)符,它應(yīng)該遵循標(biāo)識(shí)符的命名規(guī)則。
(1)Python中的變量合法的字符包括26個(gè)大小寫字母[A-Z,a-z],10個(gè)阿拉伯?dāng)?shù)字[0-9]以及下劃線(_);
(2)Python中的變量須以字母或下劃線開始,不能以數(shù)字開頭;
(3)變量命名不能使用Python中的關(guān)鍵字;
(4)Python中的變量是大小寫敏感的;
(5)Python中的變量長(zhǎng)度沒有限制。
abc, studentName,cal_result, _age這些都是合法的變量命名;而2name, 123, a-b, if等這些是不合法的變量命名。
Python是動(dòng)態(tài)類型的語(yǔ)言,在Python中定義變量時(shí)無需指定數(shù)據(jù)類型,可以直接使用賦值運(yùn)算符來定義一個(gè)變量。下面是Python中定義變量的例子:
x = 13 #定義一個(gè)數(shù)值
str = "www.survivalescaperooms.com" #定義了一個(gè)字符串
t = (1, 2, 3, 4) #定義了一個(gè)元組
lis = ["小狗", "小貓", "小豬"] #定義了一個(gè)列表
dic = {"sitename":"武林網(wǎng)VEVB", "siteurl": "www.survivalescaperooms.com"} #定義了一個(gè)詞典
Python支持同時(shí)給多個(gè)變量賦同一個(gè)值的情況:
a = b = c = 100
Python還支持將一系列值賦給一組變量:
sitename, siteurl, sitetype = "武林網(wǎng)VEVB", "www.survivalescaperooms.com", 2
a, b, c = (1, 2, 3)
a, b, c = [1, 2, 3]
a, b, c = "123"
上面四組變量定義形式,等號(hào)前面的三個(gè)變量依次獲得了等號(hào)后邊的3個(gè)值。即第一個(gè)中sitename的值為“武林網(wǎng)VEVB”,siteurl的值為"www.survivalescaperooms.com”,sitetype的值為2;而接下來的三組變量定義中,a,b,c的值分別為1,2,3。
使用這種形式進(jìn)行定義變量時(shí),值的個(gè)數(shù)必須與變量的個(gè)數(shù)保持一致。否則會(huì)報(bào)錯(cuò):值多于變量個(gè)數(shù)時(shí)會(huì)給出“too many values to unpack”,值少于變量個(gè)數(shù)時(shí)(not enough values to unpack),如下圖所示:
在Python中可以使用 print 函數(shù)輸出變量的值:
x = 10
print(x) #10
s = "www.survivalescaperooms.com"
print(s) #www.survivalescaperooms.com
t = (1, 2, 3)
print(t) #(1, 2, 3)
lst = [1, 2, 3]
print(lst) #[1, 2, 3]
dict = {"url": "www.survivalescaperooms.com", "name": "武林網(wǎng)VEVB"}
print(dict) # "url":"www.survivalescaperooms.com", "name":"武林網(wǎng)VEVB"
變量在使用前必須賦值,否則會(huì)給出名稱未定義的錯(cuò)誤。
在Python中可以使用 type 函數(shù)來獲取變量的類型。
x = 10
print(type(x)) # int
s = "www.survivalescaperooms.com"
print(type(s)) # string
t = (1, 2, 3)
print(type(t)) # tuple
lst = [1, 2, 3]
print(type(lst)) # list
dict = {"url":"www.survivalescaperooms.com", "name": "武林網(wǎng)VEVB"}
print(type(dict)) # dictionary
f1 = 2.3
print(type(f1)) # float
c = 1 + 2j
print(type(c)) # complex
上面的代碼在Python3.8.2中的運(yùn)行結(jié)果如下:
Python中的變量作用域即可訪問范圍有兩種:局部作用域和全局作用域。
如果變量定義在函數(shù)或類的內(nèi)部,則只能在函數(shù)內(nèi)部或類的內(nèi)部進(jìn)行訪問,這種情況變量是局部作用域。如企圖在函數(shù)外邊訪問函數(shù)內(nèi)部定義的變量將會(huì)報(bào)錯(cuò),給出 NameError 的錯(cuò)誤。如下面的代碼:
#定義一個(gè)函數(shù)
def myFunc():
a = 1
print(a)
myFunc() #調(diào)用函數(shù)
#企圖在函數(shù)外邊訪問函數(shù)內(nèi)部的變量
print(a)
這段代碼的執(zhí)行結(jié)果如下圖所示:
上面代碼中,最后一行print(a)是在函數(shù)外邊執(zhí)行的,而a是在函數(shù)內(nèi)部定義的,這種情況是不允許的。
不是在函數(shù)內(nèi)部或類的內(nèi)部定義的變量就是全局作用域的變量,可以在定義變量之后的任何位置訪問,包括函數(shù)內(nèi)部和類的內(nèi)部。
在某個(gè)程序塊內(nèi)定義的變量也會(huì)被視為全局作用域的變量,如在 if..else ,for循環(huán),while循環(huán),try-except等。但要注意的是,語(yǔ)句塊外部使用語(yǔ)句塊內(nèi)部定義的變量時(shí),應(yīng)確保該語(yǔ)句塊被執(zhí)行,否則也會(huì)給出NameError的錯(cuò)誤,即變量未定義。
在Python中可以使用 del 語(yǔ)句刪除一個(gè)變量,變量刪除后再使用就會(huì)給出 NameError 的錯(cuò)誤。
x = 10
print(x) #正常輸入10
del x #刪除變量x
print(x) #再次使用,就會(huì)報(bào)錯(cuò):NameError: name 'x' is not defined
在類內(nèi)部定義的變量為靜態(tài)變量,可以直接使用類名來訪問。
class Site :
name = "武林網(wǎng)VEVB"
url = "www.survivalescaperooms.com"
print(Site.url) #靜態(tài)訪問方式
類的變量也可以使用類的對(duì)象實(shí)例在訪問。如:
site = Site()
print(site.url)
一般推薦使用類名來訪問類的變量,但在實(shí)際中兩種方法對(duì)類的變量的操作結(jié)果不完全一致。
新聞熱點(diǎn)
疑難解答
圖片精選