什么是程序
程序或者叫代碼直颅,本質(zhì)上就是一堆讓計(jì)算機(jī)干活的指令,每一條指令就是一個(gè)干活步驟空猜。指令讓計(jì)算機(jī)干什么就干什么持痰,沒(méi)有指令毒费,計(jì)算機(jī)就不知道怎么辦狈涮。計(jì)算機(jī)雖然四肢發(fā)達(dá)(執(zhí)行速度快)蚀苛,但頭腦簡(jiǎn)單,只能理解一些很簡(jiǎn)單指令掖举,所以要讓計(jì)算機(jī)干一些復(fù)雜的活游盲,就需要把活分解成一條一條很簡(jiǎn)單的指令介袜,這個(gè)分解過(guò)程就是寫(xiě)代碼仪芒,或者好聽(tīng)一點(diǎn)叫程序設(shè)計(jì)唁影。同時(shí)雖然代碼最終是給計(jì)算機(jī)執(zhí)行的,但編寫(xiě)掂名、修改和維護(hù)代碼的是人据沈,因此寫(xiě)代碼需要考慮怎么讓人看起來(lái)更容易。
標(biāo)識(shí)符
標(biāo)識(shí)符(identifier)饺蔑,其實(shí)就是名字锌介,就是給代碼中的一些東西取的名字,這些東西包括常量猾警、變量孔祸、函數(shù)等等,就跟數(shù)學(xué)證明題里的一樣肿嘲,因?yàn)楸緛?lái)最早程序就是用來(lái)做科學(xué)計(jì)算的。大多數(shù)編程語(yǔ)言都規(guī)定標(biāo)識(shí)符只能包含英文字母筑公、阿拉伯?dāng)?shù)字和下劃線(xiàn)雳窟,但開(kāi)頭不能是數(shù)字,標(biāo)識(shí)符區(qū)分大小寫(xiě)匣屡。python的標(biāo)識(shí)符更特殊一點(diǎn)封救,還可以是中文等其他字符,但一般不建議這么用捣作。
關(guān)鍵字
python 內(nèi)部已經(jīng)預(yù)先定義了一些標(biāo)識(shí)符誉结,這些標(biāo)識(shí)符是有特殊用途的,叫作保留字(reserved words)或關(guān)鍵字(keywords)券躁,其他標(biāo)識(shí)符不能和這些關(guān)鍵字沖突惩坑。關(guān)鍵字的用途在后面的章節(jié)會(huì)介紹掉盅。
False class finally is return
None continue for lambda try
True def from nonlocal while
and del global not with
as elif if or yield
assert else import pass
break except in raise
行、縮進(jìn)和注釋
程序的代碼是按一行一行排列的以舒,有些語(yǔ)言要求代碼行必須以分號(hào) ';' 結(jié)尾趾痘,python 不需要。程序出于流程控制需要蔓钟,有時(shí)需要把多行代碼組成一個(gè)代碼塊按條件執(zhí)行或不執(zhí)行的永票,一般其他語(yǔ)言的代碼塊大都要求使用大括號(hào)'{}'包起來(lái),但Python的代碼塊不使用大括號(hào)滥沫,而是用縮進(jìn)侣集,同一個(gè)代碼塊的代碼,具有相同縮進(jìn)兰绣,這樣做的目的是強(qiáng)制統(tǒng)一編碼風(fēng)格世分,從而讓別人閱讀代碼時(shí)更容易∠粱辏縮進(jìn)一般建議用4個(gè)空格罚攀。
如果一個(gè)代碼行只有空白字符(空格、回車(chē)換行雌澄、tab)就叫空白行斋泄,空白行在程序運(yùn)行時(shí)會(huì)被忽略。
一般的(有例外镐牺,后面再說(shuō))炫掐,如果代碼行中有 '#' 字符,則 '#' 字符及其后面的所有字符是注釋?zhuān)诔绦蜻\(yùn)行時(shí)也會(huì)被忽略睬涧。
變量與類(lèi)型
程序的最基本應(yīng)用就是數(shù)學(xué)計(jì)算(其實(shí)所有程序本質(zhì)就是數(shù)據(jù)計(jì)算募胃,不管你代碼里直接寫(xiě)的是不是數(shù)據(jù),最后在底層都變成了數(shù)據(jù)并計(jì)算畦浓,這就是為什么叫計(jì)算機(jī))痹束,要計(jì)算就要有數(shù)據(jù),而代碼中變量就是用來(lái)存儲(chǔ)數(shù)據(jù)的讶请,因?yàn)閿?shù)據(jù)有各種類(lèi)型祷嘶, 所以變量也支持多種不同類(lèi)型。一般變量的值在程序運(yùn)行過(guò)程中是可以被改變的夺溢,如果變量的值不能被改變论巍,則又叫常量,python其實(shí)并沒(méi)有真正意義上的常量风响,詳情后面章節(jié)會(huì)描述嘉汰。
python的變量不需要像c或java語(yǔ)言那樣聲明定義,對(duì)一個(gè)變量名進(jìn)行賦值状勤,就自動(dòng)聲明并定義了一個(gè)變量鞋怀。比如: x = 1双泪, 就定義了整數(shù)變量x,不需要寫(xiě)x的類(lèi)型名稱(chēng)接箫。
實(shí)際上在大多數(shù)情況下攒读,完全可以不用知道變量的類(lèi)型名,只有在涉及到一些高級(jí)特性后才需要用到類(lèi)型名辛友,獲取變量的類(lèi)型可以用內(nèi)置函數(shù)type薄扁,比如type(x)返回x的類(lèi)型。
因?yàn)樽兞啃枰鎯?chǔ)數(shù)據(jù)废累,因此需要占用內(nèi)存邓梅,定義一個(gè)變量,就會(huì)給該變量分配內(nèi)存用于保存數(shù)據(jù)邑滨。
數(shù)字
python包括整數(shù)日缨、浮點(diǎn)數(shù)(即實(shí)數(shù))、布爾數(shù)和復(fù)數(shù)四種數(shù)字類(lèi)型掖看,復(fù)數(shù)因?yàn)橐话愕膽?yīng)用不會(huì)用到匣距,后面忽略不講。
整數(shù)
python的整數(shù)(int)都是有符號(hào)的哎壳,也就是有正負(fù)(像c語(yǔ)言毅待,有一種無(wú)符號(hào)整數(shù)類(lèi)型,就是只有正數(shù)和0值归榕,沒(méi)有負(fù)數(shù)值)尸红,書(shū)寫(xiě)方式有10進(jìn)制,16進(jìn)制刹泄、八進(jìn)制外里、二進(jìn)制。
整數(shù)的最大值是沒(méi)有限制的特石,只要內(nèi)存夠大盅蝗,多少位都可以。
以下的實(shí)例是在python命令行中進(jìn)行的姆蘸,只要在linux shell中或windos cmd中敲python墩莫,就會(huì)出來(lái),更具體可以自行搜索乞旦,這里就不說(shuō)了贼穆。
>>> a = 17 #10進(jìn)制题山,'>>>'是命令提示符或叫輸入提示符兰粉,就是讓你在后面輸入代碼
>>> b = 0x11 #16進(jìn)制
>>> c = 0o21 #八進(jìn)制,很少用
>>> d = 0b10001 #二進(jìn)制
>>> a
17
>>> b
17
>>> c
17
>>> d
17
>>>
>>>
>>> a=-17 #負(fù)數(shù)
>>> b=9999999999999999999999999999999999999999999999999999999 #最大值沒(méi)有限制
>>> a
-17
>>> b
9999999999999999999999999999999999999999999999999999999
>>>
>>> type(a) #內(nèi)置函數(shù)type()用于返回變量或值的類(lèi)型
<class 'int'>
可以用內(nèi)置函數(shù)bin
顶瞳、int
玖姑、oct
愕秫、hex
把整數(shù)轉(zhuǎn)成2進(jìn)制、10進(jìn)制焰络、8進(jìn)制和16進(jìn)制字符串
>>> bin(16)
'0b10000'
>>> int(0b10000)
16
>>> oct(16)
'0o20'
>>> hex(16)
'0x10'
浮點(diǎn)數(shù)
浮點(diǎn)數(shù)(float)也都是有符號(hào)的戴甩,采用雙精度
>>> a = 10.1
>>> b = -10.1
>>> c = 10.1e2 # 10.1的10的2次方, e表示10
>>> d = 10.1e-2
>>> a
10.1
>>> b
-10.1
>>> c
1010.0
>>> d
0.101
布爾
布爾類(lèi)型(bool)只有兩種值:True
和False
闪彼,布爾類(lèi)型是整數(shù)的子類(lèi)型甜孤,因此True
的整數(shù)值為1,False
的整數(shù)值為0
注意True
和False
首字母大寫(xiě)
>>> a = True
>>> b = False
>>>
>>> a
True
>>> b
False
>>> a + 1
2
>>> b + 1
1
布爾值主要用來(lái)做條件判斷畏腕,布爾值可以做and
缴川、or
和not
運(yùn)算
>>> a and b
False
>>> a or b
True
>>> not a
False
>>> not b
True
>>> 2 > 3
False
>>> 2 < 3
True
數(shù)字運(yùn)算
整數(shù)、浮點(diǎn)數(shù)和布爾數(shù)都可以做以下加減乘除等運(yùn)算描馅,注意對(duì)后面兩種運(yùn)算把夸,如果是負(fù)數(shù)的話(huà),運(yùn)算結(jié)果有點(diǎn)違反常識(shí)铭污,會(huì)比較難理解恋日,但因?yàn)橐话愫苌儆玫剑瑫簳r(shí)先忽略嘹狞,有用到的再去深究岂膳。
運(yùn)算 | 結(jié)果 | 例子 |
---|---|---|
x + y | 加法 | |
x - y | 減法 | |
x + y | 乘法 | |
x / y | 除法,返回浮點(diǎn)數(shù) | |
x // y | 返回除法的整數(shù)部分刁绒,丟棄分?jǐn)?shù)部分闷营,向下取整 | |
x % y | 取模,返回除法的余數(shù) |
另外知市,整數(shù)類(lèi)型還可做位運(yùn)算
運(yùn)算 | 結(jié)果 | 例子 |
---|---|---|
x | y | 按位或 | |
x ^ y | 按位異或 | |
x & y | 按位與 | |
x << n | 左移傻盟,相當(dāng)于乘于2的n次方 | |
x >> n | 右移,相當(dāng)于除于2的n次方嫂丙,但結(jié)果小于1娘赴,則為0 | |
~x | 按位取反 |
None
對(duì)一個(gè)變量進(jìn)行賦值時(shí),如果暫時(shí)不知道賦什么值跟啤,就把他置為None
诽表,表示這個(gè)變量為空,None
是一種特殊的常量值隅肥,類(lèi)型為NoneType竿奏。
函數(shù)沒(méi)有返回值時(shí),默認(rèn)返回None
腥放。
注意None
不是0泛啸,也和c語(yǔ)言里的空指針null不一樣。
>>> type(None)
<class 'NoneType'>
>>>
>>> a = None
>>> type(a)
<class 'NoneType'>
序列
...待續(xù)