Python采用動態(tài)類型系統(tǒng)。在編譯的時候,Python不會檢查對象是否擁有被調(diào)用的方法或者屬性,而是直至運行時,才做出檢查。所以操作對象時可能會拋出異常。不過,雖然Python采用動態(tài)類型系統(tǒng),它同時也是強類型的。Python禁止沒有明確定義的操作,比如數(shù)字加字符串。
與其它面向?qū)ο笳Z言一樣,Python允許程序員定義類型。構(gòu)造一個對象只需要像函數(shù)一樣調(diào)用類型即可,比如,對于前面定義的Fish類型,使用Fish()。類型本身也是特殊類型type的對象(type類型本身也是type對象),這種特殊的設(shè)計允許對類型進行反射編程。
Python內(nèi)置豐富的數(shù)據(jù)類型。與Java、C++相比,這些數(shù)據(jù)類型有效地減少代碼的長度。下面這個列表簡要地描述了Python內(nèi)置數(shù)據(jù)類型(適用于Python 3.x):
類型 |
描述 |
例子 |
備注 |
---|---|---|---|
str(string/字符串) |
一個由字符組成的不可更改的有序串行。 |
'Wikipedia'
"Wikipedia"
"""Spanning
multiple
lines""" |
在Python 3.x里,字符串由Unicode字符組成 |
bytes(字節(jié)) |
一個由字節(jié)組成的不可更改的有序串行。 |
b'Some ASCII'
b"Some ASCII" |
在Python 2.x里,bytes為str的一種 |
list(列表) |
可以包含多種類型的可改變的有序串行 |
[4.0, 'string', True] |
|
tuple(元組) |
可以包含多種類型的不可改變的有序串行 |
(4.0, 'string', True) |
|
set, frozenset |
與數(shù)學中集合的概念類似。無序的、每個元素唯一。 |
{4.0, 'string', True}
frozenset([4.0, 'string', True]) |
|
dict(字典) |
一個可改變的由鍵值對組成的無序串行。 |
{'key1': 1.0, 3: False} |
|
int(整數(shù)) |
精度不限的整數(shù) |
42 |
|
float(浮點數(shù)) |
浮點數(shù)。精度與系統(tǒng)相關(guān)。 |
3.1415927 |
|
complex |
復數(shù) |
3+2.7j |
|
bool |
邏輯值。只有兩個值:真、假 |
True
False |
|
builtin_function_or_method |
自帶的函數(shù),不可更改也不可增加 |
print
input |
|
type(類型) |
顯示某個值的類型,用type(x)獲得 |
type(1) ->
type(‘1’) -> |
|
range |
按順序排列的數(shù) |
range(10)
......list(range(10))->[0,1,2,3,4,5,6,7,8,9]
range(1,10)
......list(range(1,10))->[1,2,3,4,5,6,7,8,9]
range(1,10,2)
......list(range(1,10,2))->[1,3,5,7,9] |
在Python 2.x中,range為builtin_function_or_method,獲得的數(shù)為list |
除了各種數(shù)據(jù)類型,Python語言還用類型來表示函數(shù)、模塊、類型本身、對象的方法、編譯后的Python代碼、運行時信息等等。因此,Python具備很強的動態(tài)性。
數(shù)學運算
Python使用與C、Java類似的運算符,支持整數(shù)與浮點數(shù)的數(shù)學運算。同時還支持復數(shù)運算與無窮位數(shù)(實際受限于計算機的能力)的整數(shù)運算。除了求絕對值函數(shù)abs()外,大多數(shù)數(shù)學函數(shù)處于math和cmath模塊內(nèi)。前者用于實數(shù)運算,而后者用于復數(shù)運算。使用時需要先導入它們,比如:
>>> import math
>>> print(math.sin(math.pi/2))
1.0
fractions模塊用于支持分數(shù)運算;decimal模塊用于支持高精度的浮點數(shù)運算。
Python定義求余運行a % b的值處于開區(qū)間[0, b)內(nèi),如果b是負數(shù),開區(qū)間變?yōu)?b, 0]。這是一個很常見的定義方式。不過其實它依賴于整除的定義。為了讓方程式:b * (a // b) + a % b = a恒真,整除運行需要向負無窮小方向取值。比如7 // 3的結(jié)果是2,而(-7) // 3的結(jié)果卻是-3。這個算法與其它很多編程語言不一樣,需要注意,它們的整除運算會向0的方向取值。
Python允許像數(shù)學的常用寫法那樣連著寫兩個比較運行符。比如a < b < c與a < b and b < c等價。C++的結(jié)果與Python不一樣,首先它會先計算a < b,根據(jù)兩者的大小獲得0或者1兩個值之一,然后再與c進行比較。
初級會計職稱中級會計職稱經(jīng)濟師注冊會計師證券從業(yè)銀行從業(yè)會計實操統(tǒng)計師審計師高級會計師基金從業(yè)資格稅務(wù)師資產(chǎn)評估師國際內(nèi)審師ACCA/CAT價格鑒證師統(tǒng)計資格從業(yè)
一級建造師二級建造師消防工程師造價工程師土建職稱房地產(chǎn)經(jīng)紀人公路檢測工程師建筑八大員注冊建筑師二級造價師監(jiān)理工程師咨詢工程師房地產(chǎn)估價師 城鄉(xiāng)規(guī)劃師結(jié)構(gòu)工程師巖土工程師安全工程師設(shè)備監(jiān)理師環(huán)境影響評價土地登記代理公路造價師公路監(jiān)理師化工工程師暖通工程師給排水工程師計量工程師
人力資源考試教師資格考試出版專業(yè)資格健康管理師導游考試社會工作者司法考試職稱計算機營養(yǎng)師心理咨詢師育嬰師事業(yè)單位教師招聘公務(wù)員公選考試招警考試選調(diào)生村官
執(zhí)業(yè)藥師執(zhí)業(yè)醫(yī)師衛(wèi)生資格考試衛(wèi)生高級職稱護士資格證初級護師主管護師住院醫(yī)師臨床執(zhí)業(yè)醫(yī)師臨床助理醫(yī)師中醫(yī)執(zhí)業(yè)醫(yī)師中醫(yī)助理醫(yī)師中西醫(yī)醫(yī)師中西醫(yī)助理口腔執(zhí)業(yè)醫(yī)師口腔助理醫(yī)師公共衛(wèi)生醫(yī)師公衛(wèi)助理醫(yī)師實踐技能內(nèi)科主治醫(yī)師外科主治醫(yī)師中醫(yī)內(nèi)科主治兒科主治醫(yī)師婦產(chǎn)科醫(yī)師西藥士/師中藥士/師臨床檢驗技師臨床醫(yī)學理論中醫(yī)理論