Python是當(dāng)今日趨流行的一種腳本語言,它比Java更簡單,比php更強(qiáng)大,并且還適用于做桌面應(yīng)用的開發(fā),在ubuntu中,更加是必須的一種腳本引擎,所以有必要去學(xué)習(xí)一下,這里的文章只針對有一定編程基礎(chǔ),最好是比較熟悉php或javascript的用戶,如果沒任何基礎(chǔ)的新手建議找更詳細(xì)的教程去學(xué)習(xí)。
Python的變量是不需要定義的,這方面和php一樣,它比javascript還是寬松,不過它是用縮進(jìn)作為段落標(biāo)識的,作為習(xí)慣了C語言風(fēng)格語法的人,可能一開始會(huì)很不習(xí)慣使用,但細(xì)一想,其實(shí)也是很正常,很合理的。雖然Python在面向過程/面向?qū)ο蠓矫嬉彩呛軐捤桑珜?shí)際上一般的程序都是一個(gè)主入口,然后不斷調(diào)用其它類庫或函數(shù),所以用縮進(jìn)的方式并無不妥,那樣一方面要求用戶寫代碼時(shí)要規(guī)范,另一方面反向省去了多余的{}。
與C語言風(fēng)格相比,Python主要語法特點(diǎn)而下:
1、變量、字符串
在python中,所有變量都是對象,數(shù)組其實(shí)是一個(gè)鏈表,并且可以進(jìn)行相應(yīng)的鏈表操作。
1.1 對于普通數(shù)據(jù)類型,定義/賦值方法都是一樣的,這里不作介紹,python的字符串方面有些特別,這里介紹一下。
python對字符串用 [']["] 括起含義是一樣的,同樣對特殊字符使用 [/] 進(jìn)行轉(zhuǎn)義
不過它有一個(gè)很特別的語法就是:[''']三引號,它用于括起分多行的字符串,實(shí)際是這也可以作為它的多行注解,如:
這樣的語法很有趣吧。
需要特別注意的是,如果源碼里有中文的,一定要在源碼的第一行定義:
# -*- coding: gb18030 -*-
當(dāng)然,你也可以使用utf-8編碼,這看你是在linux還是在windows下調(diào)試了。
1.2 此外關(guān)于變量方面,有幾個(gè)內(nèi)置類型是有必要了解的,它們是:None、True、False (注意:python的變量是嚴(yán)格區(qū)分大小寫的)
None 是表示沒定義的變量,至于True/False這個(gè)誰都知道了吧,呵呵。
注解:除了用 ''' 作多行注解之外,也可以用 # 作為單行注解,這是linux下的腳本語言的常規(guī)做法了。
續(xù)行:python 中對于太長的行,可以用 / 表示未結(jié)束,這和linux的shell的通用做法是一致的。
1.3 數(shù)組定義:
arr = ['a', 'b', 'c']
等同于
arr = []
arr += ['a']
arr += ['b']
arr += ['c']
#遍歷方法:
for i in range(0, len(arr)):
print arr[i], "/n"
python的數(shù)組實(shí)際不是數(shù)組,而是一個(gè)list對象,如果要參考它的用法,可以參考這個(gè)對象的方法。
需要注意的是,python的數(shù)組實(shí)際是一個(gè)鏈表,因此定義后不能像php之類語言一樣,直接在后面追加元素,而是需要用操作鏈表的方法操作。在上述例子中:如果用 arr[2] = 'ccccc' 可以改變第三個(gè)元素的值,但如果用 arr[3] = 'dddd' 增加一個(gè)元素是會(huì)指錯(cuò)的,應(yīng)該用:arr.append('ddddd') 或 arr.insert(任意位置, 'dddd') 增加元素
對于多維數(shù)組,定義方式為: arr = [[]] * 3 它定義的是:[[], [], []],也可以用 arr = [[] for i in range(3)]
對于數(shù)組和字符串等常用操作,后面會(huì)有一章專門介紹,這里就不在列舉更多的使用方法。
2、區(qū)塊的定義(如語句、函數(shù)等)
Python的區(qū)塊的格式都是
區(qū)塊代碼:
區(qū)塊內(nèi)部的代碼
它怎么判斷區(qū)塊結(jié)束呢?它不同VB、Dephi之類,區(qū)塊都是有結(jié)束標(biāo)志的,它沒有,它是純粹根據(jù)縮進(jìn)來識別的,這樣雖然有點(diǎn)怪異,不過習(xí)慣了會(huì)覺得也是挺好的。
區(qū)塊基本定義語法:
2.1. if / elif / else
Python中沒用三問運(yùn)算符,不過可以用 (滿足條件的值 if 滿足條件 else 未滿足條件的值) 替代
如: str = ('ok' if 1>2 else 'not ok')
最終結(jié)果是: str == 'not ok'
這里需要說明的一個(gè)地方是,python中沒有 !、&& 和 || 運(yùn)算符,而是用 not、and、or
2.2. in
in判斷 一個(gè)數(shù) 是否在 一個(gè)集合(如:元組,列表等) 中
if 'yes' in ('y','ye','yes'):
print 'ok'
與之相對應(yīng)的還有 not in
2.3. for ... in
python中沒有類似C 中的for循環(huán),而是使用for...in來對集合中的每一個(gè)元素進(jìn)行操作
結(jié)果為:
['tttyyyuuu', 'cat', 'tttyyyuuu']
2.4. break / continue
這兩個(gè)的用法和其它C語法類的語言相同
2.5. while / pass
while True:
pass #什么也不做
2.6. is
用來比較兩個(gè)變量是否指向同一內(nèi)存地址(也就是兩個(gè)變量是否等價(jià)) 而 == 是用來比較兩個(gè)變量是否邏輯相等
2.7. del
用于刪除元素
del a[2:4]
a
>>>[2,3,6]
del a[:]
a
>>>[]
del a
a
#拋出異常
>>>NameError: name 'a' is not defined
2.8. try ... except ... finally / raise
用于異常處理
raise用于拋出異常,可以為自定義的異常類
這里需要特別注意的是 try 語句內(nèi)部不應(yīng)該有完成某個(gè)操作的語法,而是需要寫在
else: 后面,這和其它語言是很不同的,例如在 try 后面寫個(gè) print 它是不會(huì)顯示任何東西的。
慣例是以Error結(jié)尾的類,同類的異常一般派生自同一個(gè)基類(如Exception)
基類異常可以匹配派生類異常
2.9 函數(shù)的定義
def 函數(shù)名(參數(shù)列表):
函數(shù)代碼
return 返回值(可選)
結(jié)果為:['aaa', '1','2','3']
默認(rèn)參數(shù):
其中在后面的參數(shù),允許初始化一個(gè)默認(rèn)值,如:def myfunc(a, b=0, c='aaa') :
參數(shù)關(guān)鍵字:
python的函數(shù)還有一個(gè)變態(tài)的使用方法,就是調(diào)用時(shí)可以不按參數(shù)順序,而是直接用 key=value這樣的鍵值對表示參數(shù),如:
myfunc(c='ggggg', a=0)
可變參數(shù):
用 *key 表示,也是必須在參數(shù)表未尾
如:
關(guān)于類和包的定義,在第三章會(huì)專門介紹,這里先不作說明。
3、附注――Python的運(yùn)算符
| 運(yùn)算符 | 名稱 | 說明 | 例子 |
|---|---|---|---|
| + | 加 | 兩個(gè)對象相加 | 3 + 5得到8。'a' + 'b'得到'ab'。 |
| - | 減 | 得到負(fù)數(shù)或是一個(gè)數(shù)減去另一個(gè)數(shù) | -5.2得到一個(gè)負(fù)數(shù)。50 - 24得到26。 |
| * | 乘 | 兩個(gè)數(shù)相乘或是返回一個(gè)被重復(fù)若干次 的字符串 | 2 * 3得到6。'la' * 3得到'lalala'。 |
| ** | 冪 | 返回x的y次冪 | 3 ** 4得到81(即3 * 3 * 3 * 3) |
| / | 除 | x除以y | 4/3得到1(整數(shù)的除法得到整數(shù)結(jié) 果)。4.0/3或4/3.0得到1.3333333333333333 |
| // | 取整除 | 返回商的整數(shù)部分 | 4 // 3.0得到1.0 |
| % | 取模 | 返回除法的余數(shù) | 8%3得到2。-25.5%2.25 得到1.5 |
| << | 左移 | 把一個(gè)數(shù)的比特向左移一定數(shù)目(每個(gè) 數(shù)在內(nèi)存中都表示為比特或二進(jìn)制數(shù)字,即0和1) | 2 << 2得到8。――2按比特表示為10 |
| >> | 右移 | 把一個(gè)數(shù)的比特向右移一定數(shù)目 | 11 >> 1得到5。――11按比特表示為1011,向右移動(dòng)1比特后得到101,即十進(jìn)制的5。 |
| & | 按位與 | 數(shù)的按位與 | 5 & 3得到1。 |
| | | 按位或 | 數(shù)的按位或 | 5 | 3得到7。 |
| ^ | 按位異或 | 數(shù)的按位異或 | 5 ^ 3得到6 |
| ~ | 按位翻轉(zhuǎn) | x的按位翻轉(zhuǎn)是-(x+1) | ~5得到6。 |
| < | 小于 | 返回x是否小于y。所有比較運(yùn)算符返 回1表示真,返回0表示假。這分別與特殊的變量True和False等價(jià)。注意,這些變量名的大寫。 | 5 < 3返回0(即False)而3 < 5返回1(即True)。比較可以被任意連接:3 < 5 < 7返回True。 |
| > | 大于 | 返回x是否大于y | 5 > 3返回True。如果兩個(gè)操作數(shù)都是數(shù)字,它們首先被轉(zhuǎn)換為一個(gè)共同的類型。否則,它總是返回False。 |
| <= | 小于等于 | 返回x是否小于等于y | x = 3; y = 6; x <= y返回True。 |
| >= | 大于等于 | 返回x是否大于等于y | x = 4; y = 3; x >= y返回True。 |
| == | 等于 | 比較對象是否相等 | x = 2; y = 2; x == y返回True。x = 'str'; y = 'stR'; x == y返回False。x = 'str'; y = 'str'; x == y返回True。 |
| != | 不等于 | 比較兩個(gè)對象是否不相等 | x = 2; y = 3; x != y返回True。 |
| not | 布爾“非” | 如果x為True,返回False。 如果x為False,它返回True。 | x = True; not y返回False。 |
| and | 布爾“與” | 如果x為False,x and y返回False,否則它返回y的計(jì)算值。 | x = False; y = True; x and y,由于x是False,返回False。在這里,Python不會(huì)計(jì)算y,因?yàn)樗肋@個(gè)表達(dá)式的值肯定是False(因?yàn)閤是False)。這個(gè)現(xiàn)象 稱為短路計(jì)算。 |
| or | 布爾“或” | 如果x是True,它返回True, 否則它返回y的計(jì)算值。 | x = True; y = False; x or y返回True。短路計(jì)算在這里也適用。 |
|
新聞熱點(diǎn)
疑難解答
圖片精選