Python和Pythonic Python是一門計(jì)算機(jī)語言,簡單易學(xué),上手容易,深入有一定困難。為了逼格,還是給你們堆一些名詞吧:動(dòng)態(tài)語言、解釋型、網(wǎng)絡(luò)爬蟲、數(shù)據(jù)處理、機(jī)器學(xué)習(xí)、Web開發(fā)、等等等等。Python目前分為2.x和3.x兩個(gè)版本,與其它語言不一樣的是,它的這兩個(gè)版本是不兼容的,雖然會(huì)其中一個(gè)就容易上手另一個(gè),但是鑒于公司目前幾乎全是用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。關(guān)于PEP8規(guī)范,鏈接在這里(https://www./dev/peps/pep-0008/)。 開發(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)境。 對(duì)于Python常用的IDE(集成開發(fā)環(huán)境),推薦使用PyCharm,如果土豪請(qǐng)購買正版,如果不是土豪又有情懷,請(qǐng)使用社區(qū)版(免費(fèi)),如果既不土豪又沒有情懷,就用盜版吧(不推薦)。 Python之所以非常流行,離不開它千千萬萬的第三方庫,你可以將第三方庫理解為我寫了一個(gè)牛X的功能,發(fā)布出來之后你可以直接使用。安裝第三方庫的話,推薦使用pip,在Ubuntu上,你可以通過apt-get install python-pip安裝。 hello, world. 常見情況下,Python代碼可以通過兩種形式運(yùn)行:一是直接在剛才所講的解釋環(huán)境下(輸入python命令后進(jìn)入的地方)一行一行的執(zhí)行,或者也可以保存到一個(gè).py的文件中,在終端輸入python 文件名來執(zhí)行。比如新建一個(gè)test.py,文件內(nèi)容為print 'hello, world.',在終端輸入python test.py,即可輸出hello, world.。 注意??:Python中沒有使用花括號(hào){}來表示代碼間的層級(jí)關(guān)系而是使用縮進(jìn),這樣的好處是在語法層面上限制了不好的代碼風(fēng)格,但是初學(xué)者容易混淆。 變量、基礎(chǔ)數(shù)據(jù)類型 變量 Python中變量不需要聲明,你可以通過直接賦值的方式使用變量:
在Python中,你可以在給一個(gè)變量賦值為一種類型之后重新為其賦值為新的類型(如上面代碼第1、4行)。 基礎(chǔ)數(shù)據(jù)類型 Python中的數(shù)字有:整型、長整型、浮點(diǎn)型、布爾型、復(fù)數(shù)。
Python中的所有數(shù)據(jù)類型都是對(duì)象。你可以通過type()函數(shù)查看一個(gè)變量的類型。 Python中字符串有4種表現(xiàn)形式:單引號(hào)、雙引號(hào)、三引號(hào):
其中,第3/4種字符串表現(xiàn)形式都是三引號(hào)引起來的。如果在字符串的引號(hào)之前加上一個(gè)u,則表示這是一個(gè)unicode字符串,如果加上r,則表示這是一個(gè)原始字符串 ,這兩種類型,對(duì)于初學(xué)者暫不討論。值得注意的是,Python中沒有C-Like語言中的字符類型。 運(yùn)算符、控制語句 運(yùn)算符 Python中沒有類似于C/C++/Java的自增自減運(yùn)算符,因?yàn)樵赑ython中,數(shù)字是一種不可變類型(immutable),對(duì)數(shù)字的操作都會(huì)產(chǎn)生新的對(duì)象而不是修改原來的對(duì)象。但是i = i + 1一樣可以寫為i += 1。 注意:Python2.5以后的除法為地板除,即5/2=2而不是5/2 = 2.5。 Python常見的邏輯運(yùn)算符為:
控制語句 條件語句: Python中的條件語句只有if-elif-else,沒有switch-case,但是有經(jīng)驗(yàn)的開發(fā)者通常使用map這一結(jié)構(gòu)來達(dá)到比switch-case更加優(yōu)雅,更加Pythonic的實(shí)現(xiàn),這個(gè)后續(xù)再說。
elif類似于其它語言中的else if。 循環(huán)語句: Python中有兩種方式表達(dá)循環(huán)語句: while 循環(huán):
for循環(huán):
值得注意的是Python中沒有C-Like語言里的for(int i=0; i<10;>10;> 集合 Python中常見的集合類型有:list,tuple,set,dict。 list list表達(dá)的是一列數(shù)據(jù)的集合,列表中的元素可以增加、刪除、查找等操作:
tuple tuple類似于list,同樣表示一組數(shù)據(jù)的集合,不同的是,tuple是寫保護(hù)的,即:tuple不可以對(duì)其元素做任何修改操作(新增、刪除等):
set set表示一個(gè)不重復(fù)元素的集合,值得注意的是:set是無序的。
dict dict表示一組數(shù)據(jù)的對(duì)應(yīng)關(guān)系,與set一樣,dict是無序的(你可以通過collections中的OrderDict來達(dá)到有序)。同時(shí),對(duì)于初學(xué)者,dict與set的聲明方式容易混淆:
函數(shù)(初步) 在Python中聲明函數(shù)的方式如下:
通其它語言一樣,你可以在函數(shù)中通過return返回值。不同的是,Python中函數(shù)可以有多個(gè)返回值,比如下面的函數(shù),返回了兩個(gè)數(shù)的和以及差:
其實(shí)這里并不是真的返回了兩個(gè)值,而是將返回值組裝成一個(gè)tuple再返回。 學(xué)習(xí)資源 用Python編寫代碼一點(diǎn)都不難,事實(shí)上它一直被贊譽(yù)為最容易學(xué)的編程語言。如果你準(zhǔn)備學(xué)習(xí)web開發(fā), Python是一個(gè)不錯(cuò)的開始,甚至想做游戲的話,用Python來開發(fā)游戲的資源也有很多。這是快速學(xué)習(xí)這門語言的途徑之一。 許多程序員都把Python作為編程之旅的開始,然后是像PHP和Ruby這樣的語言。它也是2014年最熱門的web開發(fā)語言之一,并極力推薦學(xué)習(xí)。但是,Python應(yīng)該怎么學(xué)呢?應(yīng)該從哪里開始? 這里推薦的一些書和資源,剛開始學(xué)習(xí)的時(shí)候可能會(huì)特別令人沮喪,一旦你學(xué)完了基礎(chǔ),之后的東西對(duì)你來說就很自然了,你都不需要思考就知道要怎么做。 Python for Beginners 如果你的Python開發(fā)之旅有一段時(shí)間了,這門課程可能是一個(gè)很好的開始。Python for Beginners課程是由Alex Bowers講授的最全面的Python課程之一,這套網(wǎng)絡(luò)教程非常容易學(xué)習(xí)。是的,它需要付一定的費(fèi)用,但你是想單獨(dú)學(xué)習(xí),還是和其他30000名學(xué)生一起學(xué)? 報(bào)名本課程的好處是你將被授權(quán)訪問一個(gè)只有付費(fèi)會(huì)員的論壇, Alex老師自己就駐扎在那,并且很樂意盡可能地幫你解決Python的問題。我的意思是,在這個(gè)清單里任何的資源都是值得的,因?yàn)槟阃度肓艘恍┏杀绢~外收獲了與人溝通的感覺會(huì)超越一切。 你可以使用優(yōu)惠碼:CODECONDO——它會(huì)給你一個(gè)固定的75%的折扣,但激活只能在2014年9月3日之前——所以要快點(diǎn),您可以隨時(shí)購買的這個(gè)課程然后用于以后的學(xué)習(xí),不要把錢浪費(fèi)在這筆交易上!
Learn Python The Hard Way (笨辦法學(xué)Python) 這本書絕對(duì)是學(xué)習(xí)Python最簡單的方法。你會(huì)被如此簡單的基礎(chǔ)學(xué)習(xí)感到震驚,真實(shí)地感受到自己的學(xué)習(xí)歷程,一步一步地獲取新的知識(shí)。我也感到它非常鼓勵(lì)學(xué)習(xí)者去嘗試并創(chuàng)造出自己的程序。 代碼可能會(huì)很少,但是它們肯定會(huì)有助于你更好的理解語言本身和語法。Python非常的流行,所以當(dāng)你遇到了問題時(shí),在類似Stack Exchange這樣的網(wǎng)站里有可能會(huì)找到答案,遇到問題需要解決的話盡管地Google吧。 你會(huì)學(xué)到如何去:
本書的HTML在線版本是完全免費(fèi)的,大部分人使用的都是在線版。我希望你購買完整的書或者給予一些捐贈(zèng),畢竟作者花了很大的力氣來完成它。如果你感覺視頻更容易學(xué)習(xí)的話,它的高級(jí)版里就包含了視頻。 The Python Challenge 如果你的編程生涯中從沒做過這樣的挑戰(zhàn),這可能會(huì)有點(diǎn)難度。但是配和上面介紹的那本書的話也不是很難,你應(yīng)該嘗試一下。它有33個(gè)關(guān)卡(謎題),你可以用Python編程技巧解決。 幾百萬的人都在試著解決這個(gè),即使你不能完成所有的關(guān)卡,你也會(huì)將學(xué)到很多新的東西,尤其是批判性思維和發(fā)散思維。你的大腦會(huì)過熱,但這是在編程! Learn Python Programming @ Codecademy 你可能看到許多“大?!背绦騿T罵這個(gè)網(wǎng)站,但那并不重要。我們想要做的是看看或者測試一門編程語言的基本語法是怎么執(zhí)行的,以及調(diào)用函數(shù)時(shí)做了些什么,除了簡單地輸出‘Hello World!’。 在這個(gè)Codecademy的課程中你將會(huì)學(xué)到如何使用文件和循環(huán),什么是函數(shù)以及他們能用來做什么。這些都是非?;A(chǔ)的,但是對(duì)初學(xué)者來說都是很好的東西。當(dāng)需要幫助時(shí)有一個(gè)用來交流的論壇,但所有的東西都應(yīng)該在你理解的范圍之內(nèi)。 你不需要安裝任何工具,如果你想在你自己的電腦上重寫一遍代碼以便更好地理解它,你可能唯一需要的就是一個(gè)Notepad++編輯器。我就是這樣做的,并且我向所有想學(xué)習(xí)編程的人都推薦Codecademy,不管是Python還是其他的語言。 Intro to Computer Science @ Udacity Udacity提供了一個(gè)很棒的免費(fèi)課程,引你進(jìn)入Python編程和學(xué)習(xí)關(guān)于搜索引擎的許多東西,以及如何編寫你自己的小型網(wǎng)絡(luò)爬蟲。它的確是一個(gè)值得參與的課程,并且還提供了額外的指導(dǎo)和社區(qū)支持。 你可以報(bào)名成為付費(fèi)學(xué)生得到導(dǎo)師的指導(dǎo),并且可以在課程結(jié)束得到一個(gè)證書,或者你可以自己使用免費(fèi)的課件學(xué)習(xí),遺憾的是付費(fèi)課堂的容量有限,所以你申請(qǐng)后需要加入名單等待。 它總共有11個(gè)課程,每一個(gè)都有講解非常深入的文檔。去它的官方主頁查看更多的信息或者你想問的問題的答案。 Google’s Python Class Google它本身就被一大堆Python代碼驅(qū)動(dòng)著,只有他們提供社區(qū)支持并且愿意幫助其他人學(xué)習(xí)這門語言才更有意義。這是我曾經(jīng)最喜歡看的指南和課程之一。它真的很詳細(xì),而且視頻適合初學(xué)者,觀看起來也很有趣。 去看幾分鐘它的第一堂課,看看你是否喜歡那個(gè)老師,然后決定是否開始學(xué)習(xí)Python!官方主頁有這些練習(xí)題和例題的所有鏈接。 A Byte of Python 非常像LPTHW(笨辦法學(xué)Python),但是在如何制定完整的學(xué)習(xí)計(jì)劃并實(shí)施,以及如何邁出第一步上提供了更深層次的引導(dǎo),而不會(huì)讓你喪失自信心。對(duì)于那些想學(xué)Python的人來說它被認(rèn)為是最好的初學(xué)者教程之一,當(dāng)然你要先看看前幾章,是否喜歡它的寫作風(fēng)格。 Think Python Think Python是一個(gè)面向Python初學(xué)者的手冊(cè)。它從編程的基本概念教起,非常詳細(xì)地定義了所有第一次會(huì)遇到的術(shù)語,并且很有邏輯地展現(xiàn)新的概念。像遞歸和面向?qū)ο筮@樣大一點(diǎn)的知識(shí)板塊被分成了一系列更小的步驟,穿插于課程幾個(gè)章節(jié)。 在這個(gè)鏈接里你會(huì)發(fā)現(xiàn)有大量的示例代碼。它是最為專業(yè)的書之一,它有一個(gè)很嚴(yán)肅的原則: “像計(jì)算機(jī)科學(xué)家一樣思考”。它需要將近40美元才能買到,但是你可以下載免費(fèi)的PDF和HTML版本。如果從頭開始學(xué)Python的話,肯定會(huì)從它上面得到好處。 Python at Learnstreet 你可能會(huì)想有個(gè)網(wǎng)站提供如何在他們頁面上添加HTML代碼的課程,哈哈。嚴(yán)肅一點(diǎn)地說,Learnstreet提供了很棒的Python交互式學(xué)習(xí)教程,就像這篇文章所說的所有東西一樣,它對(duì)初學(xué)者非常友好。如果你遇到了問題,最好用Google去搜索。 我最喜歡Learnstreet的一點(diǎn)是每個(gè)練習(xí)后面都有許多提示和解釋,顯示在你編寫代碼的同一個(gè)界面里。 The New Boston 如果你更喜歡使用視頻學(xué)習(xí),我不確定是否還有比The New Boston的Python系列視頻教程更全面的了,許多其他的編程語言也可以在他們的YouTube頻道里找到。 它唯一的缺點(diǎn)就是沒有可以閱讀或者下載的資料,你只能看視頻。我是那種不能忍受一直盯著視頻看的程序員,這可能與我選擇Google的Python課程有關(guān),但它們實(shí)在太有趣了。 Python @ Coursera 這個(gè)課程是為從來沒接觸過編程的人準(zhǔn)備的。你只需要小學(xué)的數(shù)學(xué)水平就可以了:懂簡單的數(shù)學(xué)方程和算術(shù)優(yōu)先級(jí),以及像f(x) = x + 5這樣的函數(shù)。 它在十周內(nèi)應(yīng)該可以學(xué)完,每周大概花10小時(shí)來完成課后作業(yè)。如果你有時(shí)間來做這個(gè),并且不會(huì)感到很累,我推薦你注冊(cè)并完成這個(gè)課程,它會(huì)鞏固你的知識(shí),并可以結(jié)合上面介紹的任何一個(gè)資源來更好地理解 Python。 Pythonspot Pythonspot是一個(gè)綜合教程,劃分了很多不同類別的知識(shí)板塊,首先你將擁有初學(xué)者資源來幫你開始Python的學(xué)習(xí),然后你繼續(xù)保持前進(jìn)你能學(xué)到更多關(guān)于使用Python開發(fā)web,創(chuàng)建圖形界面,開發(fā)游戲的內(nèi)容,到那時(shí)你可以準(zhǔn)備學(xué)習(xí)一些更高級(jí)的板塊,像網(wǎng)絡(luò)等等。這些都在一個(gè)地方,非常容易使用。 Python Practice Book 從根本上說,這是Anand Chitipothu在他講授Python課程時(shí)使用的資源,但即便你不與Anand本人一起學(xué)習(xí),你仍然可以利用這個(gè)資源來獲取Python在不同角度的見解,以及看到不同開發(fā)者的觀點(diǎn)。 Python Tutor 我認(rèn)為這是新手程序員近期能夠上手的最好的項(xiàng)目之一,Python Tutor都是在教你當(dāng)執(zhí)行你寫的代碼時(shí)到底發(fā)生了些什么。清楚地了解到如何寫一段程序,能夠理解后臺(tái)程序的每個(gè)命令都是截然不同的。你可以使用自己寫的代碼,也可以使用平臺(tái)提供的代碼。 Real Python 雖然這是一個(gè)收費(fèi)的資源,但最新的評(píng)論看起來還是相當(dāng)不錯(cuò)的,所以不管怎樣我決定加上這一條。在Real Python需要花費(fèi)60美元來開始你的學(xué)習(xí),將會(huì)有超過1300頁的內(nèi)容和10個(gè)多小時(shí)的視頻供你訪問,還包括以后可以免費(fèi)更新。你能得到來自Real Python團(tuán)隊(duì)的導(dǎo)師的幫助,不過這需要額外的費(fèi)用。以及博客里有適量與代碼相關(guān)的教程能夠給你幫助。 Full Stack Python 你能比較熟練地使用Python了,但是你不知道接下來該走什么樣的方向?這個(gè)網(wǎng)絡(luò)課程就是為你解決這個(gè)問題的,通過給你一個(gè)真正的項(xiàng)目去做,幫助你理解怎樣用你學(xué)到的Python知識(shí)建立一個(gè)web應(yīng)用程序和網(wǎng)站。學(xué)會(huì)怎樣積累一些真正的知識(shí)。 Invent with Python 教你怎樣使用Python創(chuàng)造一款你自己的電腦游戲。每章為你提供了一個(gè)新游戲完整的源代碼,通過這些例子教你編程的概念。它在網(wǎng)站上可以免費(fèi)閱讀,或者在亞馬遜購買。 PythonLearn 你是一個(gè)對(duì)信息學(xué)感興趣的家伙嗎?整個(gè)網(wǎng)站的資源都圍繞著確切的話題,所以如果你感興趣的話,去看看可能會(huì)是一件好事。 Dive Into Python3 遲早有一天,大多數(shù)的東西都會(huì)使用Python3來構(gòu)建,盡管Python2仍然非常穩(wěn)定并被大量使用,但Python3在過去的兩年里確實(shí)發(fā)展的非常完整了。這本在線書籍所有的內(nèi)容都在幫助你理解Python3是什么,以及如何最好地掌握它。 擴(kuò)展閱讀,點(diǎn)下面超鏈接: T級(jí)攻防:大規(guī)模DDOS防御架構(gòu) 黑掉一臺(tái)根本不聯(lián)網(wǎng)的電腦 怎樣逼死一名程序員 |
|