變量是保存存儲值的內(nèi)存位置。也就是說,當創(chuàng)建一個變量時,可以在內(nèi)存中保留一些空間。
基于變量的數(shù)據(jù)類型,解釋器分配內(nèi)存并決定可以存儲在保留的存儲器中的內(nèi)容。 因此,通過為變量分配不同的數(shù)據(jù)類型,可以在這些變量中存儲的數(shù)據(jù)類型為整數(shù),小數(shù)或字符等等。
在Python中,變量不需要明確的聲明類型來保留內(nèi)存空間。當向變量分配值時,Python會自動發(fā)出聲明。 等號(=)用于為變量賦值。
=運算符左側(cè)的操作數(shù)是變量的名稱,而=運算符右側(cè)的操作數(shù)是將在存儲在變量中的值。 例如 -
#!/usr/bin/python3
counter = 100 # 一個整型數(shù)
miles = 999.99 # 一個浮點數(shù)
name = "Maxsu" # 一個字符串
site_url = "http://www.yiibai.com" # 一個字符串
print (counter)
print (miles)
print (name)
print (site_url)
這里,100,999.99和“Maxsu”分別是分配給counter,miles和name變量的值。執(zhí)行上面代碼將產(chǎn)生以下結(jié)果 -
100
999.99
Maxsu
http://www.yiibai.com
Python允許同時為多個變量分配單個值。
例如 -
a = b = c = 1
這里,創(chuàng)建一個整數(shù)對象,其值為1,并且所有三個變量都分配給相同的內(nèi)存位置。還可以將多個對象分配給多個變量。 例如 -
a, b, c = 10, 20, "maxsu"
這里,將兩個值為10和20的整數(shù)對象分別分配給變量a和b,并將一個值為“maxsu”的字符串對象分配給變量c。
存儲在內(nèi)存中的數(shù)據(jù)可以是多種類型。 例如,一個人的年齡可存儲為一個數(shù)字值,他的地址被存儲為字母數(shù)字字符串。 Python具有各種標準數(shù)據(jù)類型,用于定義可能的操作以及每個標準數(shù)據(jù)類型的存儲方法。
Python有五種標準數(shù)據(jù)類型 -
數(shù)字數(shù)據(jù)類型存儲數(shù)字值。當為其分配值時,將創(chuàng)建數(shù)字對象。 例如 -
var1 = 10
var2 = 20
可以使用del語句刪除對數(shù)字對象的引用。 del語句的語法是 -
del var1[,var2[,var3[....,varN]]]]
可以使用del語句刪除單個對象或多個對象。
例如 -
del var
del var_a, var_b
Python支持三種不同的數(shù)值類型 -
Python3中的所有整數(shù)都表示為長整數(shù)。 因此,長整數(shù)沒有單獨的數(shù)字類型。
例子
以下是一些數(shù)字示例 -
| int | float | complex |
|---|---|---|
| 10 | 0.0 | 3.14j |
| 100 | 15.20 | 45.j |
| -786 | -21.9 | 9.322e-36j |
| 080 | 32.3+e18 | .876j |
| -0490 | -90. | -.6545+0J |
| -0x260 | -32.54e100 | 3e+26J |
| 0x69 | 70.2-E12 | 4.53e-7j |
復數(shù)是由x + yj表示的有序?qū)Φ膶崝?shù)浮點數(shù)組成,其中x和y是實數(shù),j是虛數(shù)單位。
Python中的字符串被標識為在引號中表示的連續(xù)字符集。Python允許雙引號或雙引號。 可以使用片段運算符([]和[:])來獲取字符串的子集(子字符串),其索引從字符串開始處的索引0開始,并且以-1表示字符串中的最后一個字符。
加號(+)是字符串連接運算符,星號(*)是重復運算符。例如 -
#!/usr/bin/python3
#coding=utf-8
# save file: variable_types_str1.py
str = 'yiibai.com'
print ('str = ', str) # Prints complete string
print ('str[0] = ',str[0]) # Prints first character of the string
print ('str[2:5] = ',str[2:5]) # Prints characters starting from 3rd to 5th
print ('str[2:] = ',str[2:]) # Prints string starting from 3rd character
print ('str[-1] = ',str[-1]) # 最后一個字符,結(jié)果為:'!'
print ('str * 2 = ',str * 2) # Prints string two times
print ('str + "TEST" = ',str + "TEST") # Prints concatenated string
將上面代碼保存到 variable_types_str1.py 文件中,執(zhí)行將產(chǎn)生以下結(jié)果 -
F:\worksp\python>python variable_types_str1.py
str = yiibai.com
str[0] = y
str[2:5] = iba
str[2:] = ibai.com
str[-1] = m
str * 2 = yiibai.comyiibai.com
str + "TEST" = yiibai.comTEST
F:\worksp\python>
列表是Python復合數(shù)據(jù)類型中最多功能的。 一個列表包含用逗號分隔并括在方括號([])中的項目。在某種程度上,列表類似于C語言中的數(shù)組。它們之間的區(qū)別之一是Python列表的所有項可以是不同的數(shù)據(jù)類型,而C語言中的數(shù)組只能是同種類型。
存儲在列表中的值可以使用切片運算符([]和[])來訪問,索引從列表開頭的0開始,并且以-1表示列表中的最后一個項目。 加號(+)是列表連接運算符,星號(*)是重復運算符。例如 -
#!/usr/bin/python3
#coding=utf-8
# save file: variable_types_str1.py
list = [ 'yes', 'no', 786 , 2.23, 'minsu', 70.2 ]
tinylist = [100, 'maxsu']
print ('list = ', list) # Prints complete list
print ('list[0] = ',list[0]) # Prints first element of the list
print ('list[1:3] = ',list[1:3]) # Prints elements starting from 2nd till 3rd
print ('list[2:] = ',list[2:]) # Prints elements starting from 3rd element
print ('list[-3:-1] = ',list[-3:-1])
print ('tinylist * 2 = ',tinylist * 2) # Prints list two times
print ('list + tinylist = ', list + tinylist) # Prints concatenated lists
將上面代碼保存到 variable_types_str1.py 文件中,執(zhí)行將產(chǎn)生以下結(jié)果 -
F:\worksp\python>python variable_types_list.py
list = ['yes', 'no', 786, 2.23, 'minsu', 70.2]
list[0] = yes
list[1:3] = ['no', 786]
list[2:] = [786, 2.23, 'minsu', 70.2]
list[-3:-1] = [2.23, 'minsu']
tinylist * 2 = [100, 'maxsu', 100, 'maxsu']
list + tinylist = ['yes', 'no', 786, 2.23, 'minsu', 70.2, 100, 'maxsu']
F:\worksp\python>
元組是與列表非常類似的另一個序列數(shù)據(jù)類型。元組是由多個值以逗號分隔。然而,與列表不同,元組被括在小括號內(nèi)(())。
列表和元組之間的主要區(qū)別是 - 列表括在括號([])中,列表中的元素和大小可以更改,而元組括在括號(())中,無法更新。元組可以被認為是只讀列表。 例如 -
#!/usr/bin/python3
#coding=utf-8
# save file : variable_types_tuple.py
tuple = ( 'maxsu', 786 , 2.23, 'yiibai', 70.2 )
tinytuple = (999.0, 'maxsu')
# tuple[1] = 'new item value' 不能這樣賦值
print ('tuple = ', tuple) # Prints complete tuple
print ('tuple[0] = ', tuple[0]) # Prints first element of the tuple
print ('tuple[1:3] = ', tuple[1:3]) # Prints elements starting from 2nd till 3rd
print ('tuple[-3:-1] = ', tuple[-3:-1]) # 輸出結(jié)果是什么?
print ('tuple[2:] = ', tuple[2:]) # Prints elements starting from 3rd element
print ('tinytuple * 2 = ',tinytuple * 2) # Prints tuple two times
print ('tuple + tinytuple = ', tuple + tinytuple) # Prints concatenated tuple
將上面代碼保存到 variable_types_tuple.py 文件中,執(zhí)行將產(chǎn)生以下結(jié)果 -
F:\worksp\python>python variable_types_tuple.py
tuple = ('maxsu', 786, 2.23, 'yiibai', 70.2)
tuple[0] = maxsu
tuple[1:3] = (786, 2.23)
tuple[-3:-1] = (2.23, 'yiibai')
tuple[2:] = (2.23, 'yiibai', 70.2)
tinytuple * 2 = (999.0, 'maxsu', 999.0, 'maxsu')
tuple + tinytuple = ('maxsu', 786, 2.23, 'yiibai', 70.2, 999.0, 'maxsu')
F:\worksp\python>
以下代碼對于元組無效,因為嘗試更新元組,但是元組是不允許更新的。類似的情況可能與列表 -
#!/usr/bin/python3
tuple = ( 'abcd', 786 , 2.23, 'john', 70.2 )
list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]
tuple[2] = 1000 # 無法更新值,程序出錯
list[2] = 1000 # 有效的更新,合法
Python的字典是一種哈希表類型。它們像Perl中發(fā)現(xiàn)的關聯(lián)數(shù)組或散列一樣工作,由鍵值對組成。字典鍵幾乎可以是任何Python數(shù)據(jù)類型,但通常為了方便使用數(shù)字或字符串。另一方面,值可以是任意任意的Python對象。
字典由大括號({})括起來,可以使用方括號([])分配和訪問值。例如 -
#!/usr/bin/python3
#coding=utf-8
# save file : variable_types_dict.py
dict = {}
dict['one'] = "This is one"
dict[2] = "This is my"
tinydict = {'name': 'maxsu', 'code' : 1024, 'dept':'IT Dev'}
print ("dict['one'] = ", dict['one']) # Prints value for 'one' key
print ('dict[2] = ', dict[2]) # Prints value for 2 key
print ('tinydict = ', tinydict) # Prints complete dictionary
print ('tinydict.keys() = ', tinydict.keys()) # Prints all the keys
print ('tinydict.values() = ', tinydict.values()) # Prints all the values
將上面代碼保存到 variable_types_dict.py 文件中,執(zhí)行將產(chǎn)生以下結(jié)果 -
F:\worksp\python>python variable_types_dict.py
dict['one'] = This is one
dict[2] = This is my
tinydict = {'name': 'maxsu', 'code': 1024, 'dept': 'IT Dev'}
tinydict.keys() = dict_keys(['name', 'code', 'dept'])
tinydict.values() = dict_values(['maxsu', 1024, 'IT Dev'])
字典中的元素沒有順序的概念。但是說這些元素是“亂序”是不正確的; 它們是無序的。
有時,可能需要在內(nèi)置類型之間執(zhí)行轉(zhuǎn)換。要在類型之間進行轉(zhuǎn)換,只需使用類型名稱作為函數(shù)即可。
有以下幾種內(nèi)置函數(shù)用于執(zhí)行從一種數(shù)據(jù)類型到另一種數(shù)據(jù)類型的轉(zhuǎn)換。這些函數(shù)返回一個表示轉(zhuǎn)換值的新對象。它們分別如下所示 -
| 編號 | 函數(shù) | 描述 |
|---|---|---|
| 1 | int(x [,base]) |
將x轉(zhuǎn)換為整數(shù)。如果x是字符串,則要base指定基數(shù)。 |
| 2 | float(x) |
將x轉(zhuǎn)換為浮點數(shù)。 |
| 3 | complex(real [,imag]) |
創(chuàng)建一個復數(shù)。 |
| 4 | str(x) |
將對象x轉(zhuǎn)換為字符串表示形式。 |
| 5 | repr(x) |
將對象x轉(zhuǎn)換為表達式字符串。 |
| 6 | eval(str) |
評估求值一個字符串并返回一個對象。 |
| 7 | tuple(s) |
將s轉(zhuǎn)換為元組。 |
| 8 | list(s) |
將s轉(zhuǎn)換為列表。 |
| 9 | set(s) |
將s轉(zhuǎn)換為集合。 |
| 10 | dict(d) |
創(chuàng)建一個字典,d必須是(key,value)元組的序列 |
| 11 | frozenset(s) |
將s轉(zhuǎn)換為凍結(jié)集 |
| 12 | chr(x) |
將整數(shù)x轉(zhuǎn)換為字符 |
| 13 | unichr(x) |
將整數(shù)x轉(zhuǎn)換為Unicode字符。 |
| 14 | ord(x) |
將單個字符x轉(zhuǎn)換為其整數(shù)值。 |
| 15 | hex(x) |
將整數(shù)x轉(zhuǎn)換為十六進制字符串。 |
| 16 | oct(x) |
將整數(shù)x轉(zhuǎn)換為八進制字符串。 |