編程語言之間很多概念是互通的,對于和Java或者JavaScript已經(jīng)重復(fù)的基礎(chǔ)內(nèi)容,不再筆記,只挑選比較常用和不同的地方予以記錄。
本章目錄
- 安裝Python
- 交互式解釋器
- 算法是什么
- 數(shù)字和表達(dá)式
- 變量(略)
- 語句(略)
- 獲取用戶輸入
- 函數(shù)(略)
- 模塊
- 保存并執(zhí)行程序
- 字符串
- 小結(jié)(略)
安裝Python
Mac OS上默認(rèn)安裝了Python,除非你需要安裝新版本的可以參考 官方下載。[注:Terminal上輸入python發(fā)現(xiàn)個(gè)人版本是2.7.8。到官網(wǎng)上查看發(fā)布?xì)v史,也是醉了,早些時(shí)候已經(jīng)到了3.4.2,而最近的版本居然是2.7.9 ]
除了官方的發(fā)布版本外,還有很多Python的版本可供下載,每個(gè)版本側(cè)重功能可能會有不同。因此如果聽說某Python前面加個(gè) i 或者 j 叫成 iPython 或者 jPython 八成就是其他發(fā)布版本,不要覺得新奇。
交互式解釋器
在Terminal輸入python即進(jìn)入了交互式解釋器,輸入一些有意義的語句既可看到響應(yīng)。
算法是什么
算法是我們?yōu)榱诉_(dá)成目的,告訴計(jì)算機(jī)該要怎么做的一個(gè)步驟。
數(shù)字和表達(dá)式
使用交互式解釋器可以做一些很基本的算術(shù)運(yùn)算:
>>> 2 + 2
4
>>> 53672 + 235253
288925
>>> 1/2
0
如上的最后一個(gè)表達(dá)式,兩個(gè)整數(shù)相除結(jié)果為整數(shù),那么要讓它不按照計(jì)算機(jī)語言處理方式,而只按照日常計(jì)算的方式有兩種做法:
- 用浮點(diǎn)數(shù)進(jìn)行運(yùn)算。只要有一個(gè)數(shù)為浮點(diǎn)數(shù),結(jié)果就為浮點(diǎn)數(shù):
>>> 1.0 / 2.0
0.5
>>> 1 / 2.0
0.5
>>> 1.0 / 2
0.5
- 讓Python改變除法的執(zhí)行方式
>>> from __future__ import division
>>> 1 / 2
0.5
如上,從__future__中導(dǎo)入了division。這個(gè)時(shí)候要用整除就要使用雙斜桿了。
>>> 1 // 2
0
還有一個(gè)取余運(yùn)算符比較常用,注意的是取余運(yùn)算符對浮點(diǎn)數(shù)也適用。
>>> 2.75 % 0.5
0.25
最后介紹一個(gè)冪(乘方)運(yùn)算符:
>>> 3 ** 2
9
>>> -3 ** 2
-9
>>> (-3) ** 2
9
長整形數(shù)
受計(jì)算機(jī)存儲單位的限制,所有整數(shù)不能大于某個(gè)數(shù)(也不能小于某個(gè)數(shù)),如果超出Python會自動轉(zhuǎn)換為長整型數(shù),當(dāng)然你也可以自己定義的時(shí)候就加上L在后面,如下是定義和運(yùn)算的例子:
>>> 1000000000000000000000
1000000000000000000000L
>>> 2987198739107239812 * 1239827389479283479283
3703610814563136332097919362350014814796L
十六進(jìn)制和八進(jìn)制
>>> 0xAF
175
>>> 010
8
獲取用戶輸入
>>> x = input('x:')
x:4
>>> y = input('y:')
y:3
>>> print x*y
12
模塊
可以把模塊當(dāng)作導(dǎo)入到Python中增強(qiáng)功能的擴(kuò)展,有兩種導(dǎo)入形式:
>>> import math
>>> int(math.floor(32.99))
32
>>> from math import sqrt
>>> sqrt(9)
3.0
cmatch和復(fù)數(shù)
cmatch被用來處理虛數(shù)、復(fù)數(shù)之類,幾乎沒機(jī)會用到的吧,略。
回到__furture__
一些在將來會成為Python語言特性的功能會被假如到模塊__furture__中,在前面已經(jīng)有接觸到過這個(gè) 模塊。
保存并執(zhí)行程序
將程序片段保存在py為后綴的文件后,可以通過python file.py進(jìn)行執(zhí)行。如下介紹配置python文件為可執(zhí)行文件的做法。
在文件的首行加上 #!usr/bin/env python,然后命令行給文件加上可執(zhí)行屬性 chmod a+x hello.py 就能執(zhí)行命令行鍵入 ./hello.py 執(zhí)行代碼了。(注:個(gè)人PC上的Python版本是2.7.8,不同版本不同操作系統(tǒng),需要添加的行首內(nèi)容或執(zhí)行命令可能會有不同)示例代碼如下:
#!usr/bin/python
name = raw_input('What is your name ?')
print 'Hello,' + name + '!'
直接通過雙擊也是可以的,但是輸入結(jié)果以后程序運(yùn)行完畢后就直接關(guān)閉了,加入如下代碼即可:
raw_input("Press <enter>")
字符串
引號與轉(zhuǎn)譯
>>> "Hello, World!"
'Hello, World!'
如上,輸入的時(shí)候是用的雙引號,實(shí)際輸出卻是單引號,在Python中兩者沒有區(qū)別,那么為什么不統(tǒng)一用單或者雙引號呢,看如下例子:
>>> "Let's go!"
"Let's go!"
在一些場合會需要輸出單引號(或者雙引號)的,除了單雙引號交替以外,還可以使用\將引號進(jìn)行轉(zhuǎn)譯,比如:
>>> 'Let\' go!'
"Let's go!"
拼接字符串
如下是拼接字符串的常規(guī)做法:
>>> "Hello," + " World!"
'Hello, World!'
>>> x = "Hello,"
>>> y = " World!"
>>> x + y
'Hello, World!'
字符串表示str和repr
>>> "Hello, World!"
'Hello, World!'
>>> 1000L
1000L
>>> print "Hello, World!"
Hello, World!
>>> print 1000L
1000
如上示例中我們可以看到,Python打印的字符串是有引號括起來的,而print函數(shù)打印的字符串是沒有。差別就在于這是用來兩種不同的字符串轉(zhuǎn)換機(jī)制,前者是用repr將內(nèi)容轉(zhuǎn)化為Python代碼中的形式,后者使用str將內(nèi)容轉(zhuǎn)化為方便用戶看的形式,上面的示例等同于下面的寫法:
>>> print repr("Hello, World!")
'Hello, World!'
>>> print repr(1000L)
1000L
>>>print str("Hello, World!")
'Hello, World!'
>>>print str(1000L)
1000
另外還有一個(gè)知識點(diǎn)請看如下示例:
>>> temp = 42
>>> print "The number is: " + temp
error
>>> print "The number is: " + \`temp\`
The number is: 42
直接將字符串和數(shù)字拼接是會報(bào)錯(cuò)的(寫慣了js這點(diǎn)還是感覺蠻意外的),而通過如上寫法等同于調(diào)用了repr(temp),將temp轉(zhuǎn)化為了字符串“42”所以正常拼接后輸出了。
input和raw_input的比較
input會把用戶輸入當(dāng)做一個(gè)合法的結(jié)果,比如命令行執(zhí)行 input("What's your name ?") 用戶直接輸入名字Lucy是會報(bào)錯(cuò)的,需要輸入內(nèi)容裹上字符串才行,如"Lucy"。而raw_input相當(dāng)于替你作了這個(gè)事情,將輸入內(nèi)容作為raw數(shù)據(jù)然后替你包裹成字符串。除非有特殊需要,一般很少用input來做數(shù)據(jù)輸入的。
特殊的字符串
長字符串
在文本內(nèi)容跨多行的時(shí)候,可以使用三引號包裹的寫法。原始字符串
通過形如\n的方式我們可以使用一些轉(zhuǎn)譯字符,但是在一些路徑的表示中,我們可能并不希望有些字符被轉(zhuǎn)移,這時(shí)候可以通過在字符前加上r來將字符表示為原始字符串:
>>> print "C:\nowhere"
C:
owhere
>>> print r"C:\nowhere"
C:\nowhere
唯一要注意的是,原始字符串的最后一個(gè)字符串不能是反斜桿否則會報(bào)錯(cuò)。 做法是將最后一個(gè)反斜桿單獨(dú)作為一個(gè)字符串來處理:
>>> print r"C:\nowhere\"
error
>>> print r"C:\nowhere" "\\"
C:\nowhere\
Unicode字符串
Python中的字符串是一ANSII來表示的,如果需要用Unicode的方式來存儲可以使用如下寫法:
>>> u"Hello, World!"
u'Hello, World!'