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