Python和Pythonic
Python是一門計(jì)算機(jī)語言(這不是廢話么)击胜,簡單易學(xué),上手容易役纹,深入有一定困難偶摔。為了逼格,還是給你們堆一些名詞吧:動態(tài)語言促脉、解釋型辰斋、網(wǎng)絡(luò)爬蟲、數(shù)據(jù)處理瘸味、機(jī)器學(xué)習(xí)亡呵、Web開發(fā)、等等等等硫戈。Python目前分為2.x和3.x兩個版本锰什,與其它語言不一樣的是,它的這兩個版本是不兼容的丁逝,雖然會其中一個就容易上手另一個汁胆,但是鑒于公司目前幾乎全是用Python2.7,建議同事們也可以從2.x版本開始霜幼,如果沒有歷史遺留問題嫩码,建議初學(xué)者直接上手Python3。
Pythonic指的是按照Python推薦的規(guī)范罪既,干凈美觀铸题、可讀性強(qiáng)的逼格滿滿到代碼風(fēng)格,比如多使用Python內(nèi)置的數(shù)據(jù)結(jié)構(gòu)琢感,不要重復(fù)造輪子丢间。簡單來講,你可以在Python解釋環(huán)境里輸入import this了解一下Python之禪驹针。Python的代碼風(fēng)格上烘挫,如果團(tuán)隊(duì)有自己的風(fēng)格則按照自己的風(fēng)格,否則柬甥,比較推薦的是PEP8或Google Code Style饮六。其垄。
開發(fā)環(huán)境搭建
在常見的*inx系統(tǒng)上,默認(rèn)都安裝了Python解釋器卤橄,你可以直接在終端輸入python進(jìn)入默認(rèn)的環(huán)境绿满。在Windows系統(tǒng)上,你需要去Python官網(wǎng)下載Python的安裝包窟扑,安裝之后可以在“所有程序”中找到“IDLE”棒口,也可以在cmd中通過輸入python進(jìn)入解釋器環(huán)境。
想要一起學(xué)習(xí)交流想要共同進(jìn)步的可以加python爬蟲學(xué)習(xí)q-u-n-227-435-450 辜膝,里有許多學(xué)習(xí)資料等待著大家
對于Python常用的IDE(集成開發(fā)環(huán)境)无牵,推薦使用PyCharm,如果土豪請購買正版厂抖,如果不是土豪又有情懷茎毁,請使用社區(qū)版(免費(fèi)),如果既不土豪又沒有情懷忱辅,就用盜版吧(不推薦)七蜘。
Python之所以非常流行,離不開它千千萬萬的第三方庫墙懂,你可以將第三方庫理解為我寫了一個牛X的功能橡卤,發(fā)布出來之后你可以直接使用。安裝第三方庫的話损搬,推薦使用pip碧库,在Ubuntu上,你可以通過apt-get install python-pip安裝巧勤。
hello, world.
常見情況下嵌灰,Python代碼可以通過兩種形式運(yùn)行:一是直接在剛才所講的解釋環(huán)境下(輸入python命令后進(jìn)入的地方)一行一行的執(zhí)行,或者也可以保存到一個.py的文件中颅悉,在終端輸入python 文件名來執(zhí)行沽瞭。比如新建一個test.py,文件內(nèi)容為print 'hello, world.'剩瓶,在終端輸入python test.py驹溃,即可輸出hello, world.。
注意??:Python中沒有使用花括號{}來表示代碼間的層級關(guān)系而是使用縮進(jìn)延曙,這樣的好處是在語法層面上限制了不好的代碼風(fēng)格豌鹤,但是初學(xué)者容易混淆。
變量搂鲫、基礎(chǔ)數(shù)據(jù)類型
變量
Python中變量不需要聲明傍药,你可以通過直接賦值的方式使用變量:
a = 1
b = True
c = 1.0
a = 3+2j
在Python中磺平,你可以在給一個變量賦值為一種類型之后重新為其賦值為新的類型(如上面代碼第1魂仍、4行)拐辽。
基礎(chǔ)數(shù)據(jù)類型
Python中的數(shù)字有:整型、長整型擦酌、浮點(diǎn)型俱诸、布爾型、復(fù)數(shù)赊舶。
整形:int睁搭,常見的整數(shù)(正數(shù)/負(fù)數(shù)/0),通過sys.maxint即可查看當(dāng)前平臺上最大的整型的值笼平。
長整型:long园骆,比整型最大的值還大或者比整型最小的值還小的整數(shù)。注意:Python中長整型沒有大小限制寓调,你的內(nèi)存有多大锌唾,它就能表示多大。
浮點(diǎn)型:float夺英,即小數(shù)晌涕。
布爾型:bool,常見形式為True, False痛悯,表示邏輯真和邏輯假余黎,其實(shí)背后的實(shí)現(xiàn)是數(shù)字1和0.
復(fù)數(shù):complex,Python是為數(shù)不多語法層面上支持復(fù)數(shù)的語言载萌,表現(xiàn)為形如1+2j的形式惧财。可以直接支持兩個復(fù)數(shù)的運(yùn)算扭仁。
Python中的所有數(shù)據(jù)類型都是對象可缚。你可以通過type()函數(shù)查看一個變量的類型。
Python中字符串有4種表現(xiàn)形式:單引號斋枢、雙引號帘靡、三引號:
string1 = 'this is a str'
string2 = "this is a str"
string3 = '''this is a str
這里還是string3的范圍'''
string4 = """this is a str"""
其中,第3/4種字符串表現(xiàn)形式都是三引號引起來的瓤帚。如果在字符串的引號之前加上一個u描姚,則表示這是一個unicode字符串,如果加上r戈次,則表示這是一個原始字符串?轩勘,這兩種類型,對于初學(xué)者暫不討論怯邪。值得注意的是绊寻,Python中沒有C-Like語言中的字符類型。
運(yùn)算符、控制語句
運(yùn)算符
Python中沒有類似于C/C++/Java的自增自減運(yùn)算符澄步,因?yàn)樵赑ython中冰蘑,數(shù)字是一種不可變類型(immutable),對數(shù)字的操作都會產(chǎn)生新的對象而不是修改原來的對象村缸。但是i = i + 1一樣可以寫為i += 1祠肥。
注意:Python2.5以后的除法為地板除,即5/2=2而不是5/2 = 2.5梯皿。
Python常見的邏輯運(yùn)算符為:
!=, <>:不等于仇箱,表示兩邊的值不相等,推薦使用前一種东羹。1 != 2剂桥。
==:等于,表示兩邊的值相等属提。2 == 2渊额。
and:邏輯與,如果兩邊的值都為True則整個值為True垒拢,反之為False旬迹。1==1 and 2==2。
or:邏輯或求类,如果兩邊有一個值True則整個值為True奔垦,反之為False。1==2 or 2==2尸疆。
not:邏輯非椿猎,如果值為True,則結(jié)果為False寿弱。not 2==1犯眠。
控制語句
條件語句:
Python中的條件語句只有if-elif-else,沒有switch-case症革,但是有經(jīng)驗(yàn)的開發(fā)者通常使用map這一結(jié)構(gòu)來達(dá)到比switch-case更加優(yōu)雅筐咧,更加Pythonic的實(shí)現(xiàn),這個后續(xù)再說噪矛。
if條件1:
語句塊1
elif條件2:
語句塊2
else:
語句塊3
elif類似于其它語言中的else if量蕊。
循環(huán)語句:
Python中有兩種方式表達(dá)循環(huán)語句:
while 循環(huán):
while條件:
語句塊
for循環(huán):
for變量in集合:
語句塊
值得注意的是Python中沒有C-Like語言里的for(int i=0; i<10; i++)的語法,不過可以使用xrange或者range函數(shù)實(shí)現(xiàn)同樣的效果艇挨。前一個函數(shù)返回一個生成器残炮,后一個函數(shù)返回list,一般推薦使用前一個缩滨,至于這兩個函數(shù)的異同势就,后面有時間細(xì)聊泉瞻。
集合
Python中常見的集合類型有:list,tuple苞冯,set袖牙,dict。
list
list表達(dá)的是一列數(shù)據(jù)的集合抱完,列表中的元素可以增加贼陶、刪除刃泡、查找等操作:
In[1]: l = ['this','is','a','list']# 初始化一個list
In[2]: type(l)
Out[2]: list
In[3]: l.index('is')#查找元素
Out[3]: 1
In[4]: l.append('new item')#新增元素
In[5]: l
Out[5]: ['this','is','a','list','new item']
In[6]: l.reverse()#反轉(zhuǎn)列表
In[7]: l
Out[7]: ['new item','list','a','is','this']
In[8]: l.remove('is')# 刪除元素
In[9]: l
Out[9]: ['new item','list','a','this']
tuple
tuple類似于list巧娱,同樣表示一組數(shù)據(jù)的集合,不同的是烘贴,tuple是寫保護(hù)的禁添,即:tuple不可以對其元素做任何修改操作(新增、刪除等):
In[1]: t = (1,2,3)# 初始化
In[2]: t
Out[2]: (1,2,3)
In[3]: type(t)
Out[3]: tuple
set
set表示一個不重復(fù)元素的集合桨踪,值得注意的是:set是無序的老翘。
In[1]: s = {'this','is','a','a','set'}# 初始化
In[2]: s
Out[2]: {'a','is','set','this'}
In[3]: type(s)
Out[3]: set
In[4]: s.add('new item')# 新增元素
In[5]: s
Out[5]: {'a','is','new item','set','this'}
In[6]: s.remove('a')#刪除元素
In[7]: s
Out[7]: {'is','new item','set','this'}
dict
dict表示一組數(shù)據(jù)的對應(yīng)關(guān)系,與set一樣锻离,dict是無序的(你可以通過collections中的OrderDict來達(dá)到有序)铺峭。同時,對于初學(xué)者汽纠,dict與set的聲明方式容易混淆:
In[1]: d = {'a': 'A','b': 'B'}# 初始化
In[2]: d
Out[2]: {'a': 'A','b': 'B'}
In[3]: d['a']
Out[3]: 'A'
In[4]: d['c'] = 'C'# 新增元素
In[5]: d
Out[5]: {'a': 'A','b': 'B','c': 'C'}
In[6]: deld['a']#刪除元素
In[7]: d
Out[7]: {'b': 'B','c': 'C'}
函數(shù)(初步)
在Python中聲明函數(shù)的方式如下:
def add(num1,num2):
returnnum1 + num2
通其它語言一樣卫键,你可以在函數(shù)中通過return返回值。不同的是虱朵,Python中函數(shù)可以有多個返回值莉炉,比如下面的函數(shù),返回了兩個數(shù)的和以及差:
def calc(n1,n2):
returnn1 + n2,n1 *n2
add,sub = calc(5,1)
print add,sub# 6 4
其實(shí)這里并不是真的返回了兩個值碴犬,而是將返回值組裝成一個tuple再返回絮宁。
小結(jié)
Python中最最最基礎(chǔ)的部分差不多就是這些了,后面會繼續(xù)分享一些Pythonic的Python代碼寫法服协。