導(dǎo)讀:Python 簡史在正式學(xué)習(xí) Python 之前,,我們應(yīng)該對以下內(nèi)容有所了解。 Python 讀音Python(英國發(fā)音:/?pa?θ?n/ 美國發(fā)音:/?pa?θɑ?n/),,是一種面向?qū)ο蟮慕忉屝陀嬎銠C(jī)程序設(shè)計語言,,由荷蘭人 Guido van Rossum 于1989年發(fā)明,第一個公開發(fā)行版發(fā)行于1991年,。 Python 命名Python 命名的由來頗具感性色彩,,1989年圣誕節(jié)期間,在阿姆斯特丹,,Guido 為了打發(fā)圣誕節(jié)的無趣,,決心開發(fā)一個新的腳本解釋程序,作為 ABC 語言的一種繼承,。之所以選中 Python(意為大蟒蛇)作為該編程語言的名字,,是因為他是一個叫 Monty Python 的喜劇團(tuán)體的愛好者。 Python 特點若有人問我 Python 最大的特點是什么,,我會毫不猶豫的告訴他:簡單易學(xué),,功能強(qiáng)大。作為一款純粹的自由軟件,,Python 有很多優(yōu)點:
Python 發(fā)展Python 誕生至今已經(jīng)成為最受歡迎的程序設(shè)計語言之一。自2004年以后,,Python 的使用率一直呈線性增長,。根據(jù) TIOBE 編程語言社區(qū)發(fā)布的2018年1月排行榜,Python 已經(jīng)超過 C# 躍居熱門編程語言的第四位,。 由于 Python 語言的簡潔性,、易讀性以及可擴(kuò)展性,在國外用 Python 做科學(xué)計算的研究機(jī)構(gòu)日益增多,,一些知名大學(xué)已經(jīng)采用 Python 來教授程序設(shè)計課程,。例如卡耐基梅隆大學(xué)的編程基礎(chǔ)、麻省理工學(xué)院的計算機(jī)科學(xué)及編程導(dǎo)論就使用 Python 語言講授,。眾多開源的科學(xué)計算軟件包都提供了 Python 的調(diào)用接口,,例如著名的計算機(jī)視覺庫 OpenCV,、三維可視化庫 VTK,、醫(yī)學(xué)圖像處理庫 ITK,。而 Python 專用的科學(xué)計算擴(kuò)展庫就更多了,例如十分經(jīng)典的科學(xué)計算擴(kuò)展庫:NumPy,、SciPy 和 Matplotlib,,它們分別為 Python 提供了快速數(shù)組處理、數(shù)值運(yùn)算以及繪圖功能,。因此 Python 語言及其眾多的擴(kuò)展庫所構(gòu)成的開發(fā)環(huán)境十分適合工程技術(shù),、科研人員處理實驗數(shù)據(jù)、制作圖表,,甚至開發(fā)科學(xué)計算應(yīng)用程序,。 Python 前景未來是人工智能的時代,有理由相信 Python 將發(fā)揮更大的作用,。經(jīng)過多年的演進(jìn),,人工智能發(fā)展進(jìn)入了新階段。為搶抓人工智能發(fā)展的重大戰(zhàn)略機(jī)遇:
學(xué)習(xí) Python當(dāng)前,,Python 已經(jīng)成為人工智能領(lǐng)域最流行的編程語言,,而人工智能的火熱又反過來促進(jìn)了 Python 的發(fā)展。在國家層面力量的大力推動下,,Python 普及的速度定將大大加快,,無論是作為輔助工具還是跟隨時代步伐,學(xué)習(xí) Python 都是很有意義的。 兩年前,,因項目需要,,作者首次接觸 Python,從此便一發(fā)不可收,,基于 Python 完成了一系列項目的開發(fā),。一路走來,深感書本與實踐脫離之痛,,市面上種類繁多的編程輔導(dǎo)書,,大都力求面面俱到,動輒數(shù)百頁,,難免令初學(xué)者望而生畏,。鑒于此,作者寫了本課程,,試圖以一種簡明的形式,,帶領(lǐng)讀者走近 Python。 第01課:Python 開發(fā)環(huán)境搭建及預(yù)備知識特別說明如果讀者已經(jīng)搭建了 Python 開發(fā)環(huán)境,,可跳過本章第一部分,,但需要注意,本課程列舉的實例代碼中部分有中文注釋,,有些集成開發(fā)環(huán)境可能不支持中文注釋,,因此,運(yùn)行本課程實例時請注意將注釋去掉,。另外,,如果讀者覺得搭建開發(fā)環(huán)境比較繁瑣,可采用 Python 自帶的 IDLE 作為開發(fā)環(huán)境,,安裝方法請訪問:《Python3入門筆記》,。 Python 開發(fā)環(huán)境搭建開發(fā) Python 的 IDE 有很多,本文介紹基于 Eclipse+PyDev+Python 搭建開發(fā)環(huán)境的方法,。
Eclipse 是一款基于 Java 的可擴(kuò)展開發(fā)平臺,。其官方下載中包括 J2EE 方向版本、Java 方向版本,、C/C++ 方向版本,、移動應(yīng)用方向版本等諸多版本。除此之外,,Eclipse 還可以通過安裝插件的方式進(jìn)行諸如 Python,、Android、PHP 等語言的開發(fā),。本文將要介紹的就是使用 Eclipse 與 PyDev 插件,,安裝 Python 開發(fā)環(huán)境的方法,。
軟件下載Eclipse 下載我們可以進(jìn)入 Eclipse 官網(wǎng)下載界面下載 Eclipse 軟件,。在該頁面,可以看到針對不同開發(fā)需求的 Eclipse 版本,,本文采用的是 Eclipse IDE for Java and DSL Developers。目前,,最新的版本是 Eclipse Oxygen.2 (4.7.2) Release,,為2017年10月放出的版本。另外,,還需要注意的是,,需要根據(jù)自己的操作系統(tǒng)選擇正確的系統(tǒng)位數(shù)(32/64bits)。 PyDev 離線下載我們可以在 PyDev 項目下載頁面看到一些有價值的信息:
Eclipse 安裝這里要注意,,Eclipse 安裝需要 Java 環(huán)境,如果還沒有安裝 Java 環(huán)境,,請先去下載安裝 JDK(點擊這里),。 Eclipse 實際上是一個基于 OSGI 框架的軟件,在 Windows 系統(tǒng)上無需安裝,,只需要將其解壓,,雙擊打開 eclipse.exe 即可。在 Mac OS 上則有所不同,,需要雙擊 .dmg 文件安裝,。在第一次運(yùn)行時,會要求你輸入工作路徑,,你可以自定義也可以接受默認(rèn)路徑,。 PyDev 插件安裝Eclipse 插件的安裝方式有離線和在線兩種,本文介紹在線安裝方法,。 打開 Eclipse,,選擇“Help”->“Install New Software”。在彈出的對話框中,,點擊 Add 按鈕,,添加新的安裝源,,如下圖所示。 在 Location 處填寫安裝源的網(wǎng)址:http://www./updates/(很多博客中寫的是http:///updates),,這個地址并非一成不變,,因此,最好到官網(wǎng)確認(rèn)一下,。確認(rèn)方法在上面“軟件下載”小節(jié)中已有說明,。 此外,需取一個名字填寫在 Name 處,,比如我這里寫的是 PyDev,。把“connect all update sites during install to find required software”的勾選去掉,否則在安裝新插件時會聯(lián)網(wǎng)尋找所有可能的更新站點搜索,,導(dǎo)致安裝時間不可預(yù)估,,并可能導(dǎo)致安裝失敗。確定后可以看到一個 Pending 過程,,然后得到如下圖所示的插件,,一般來說,我們只需選擇 PyDev 即可,,這里我兩個都安裝了(不推薦): 勾選后,,點擊 Next 進(jìn)行安裝。不過,,由于網(wǎng)絡(luò)的原因,,這種方法安裝 PyDev 極有可能失敗,提示網(wǎng)絡(luò)連接錯誤等,。 Python 安裝Python 的安裝比較簡單,,前往 Python 官網(wǎng)下載安裝包。進(jìn)入官網(wǎng)之后,,官網(wǎng)會根據(jù)你的計算機(jī)操作系統(tǒng)推薦 Python 安裝包的版本,,如下圖所示,你可以根據(jù)推薦下載最新的安裝包,,需要注意的是,,Python 目前有 Python2 和 Python3 兩個大版本,差異顯著,,本課程基于 Python3 編寫,,因此,請讀者選擇 Python3.X 安裝包,,具體內(nèi)容安裝步驟可參考博文《Python3 入門筆記——Windows 安裝與運(yùn)行》,。 PyDev 插件配置安裝好 PyDev 插件后,并不能正常使用,,還需要配置 Python 的解釋器,。 打開Eclipse,,選擇“Window” -> “Preferences”(如果是 Mac,則同時按下 Command 和 創(chuàng)建一個 Python 項目前面就已經(jīng)配置好了 Python 的開發(fā)環(huán)境,,下面新建一個項目,來測試一下,,確實可以運(yùn)行,。 點擊“File” -> “New” -> “Other”,找到“PyDev”,,選擇“PyDev Project”,,點擊“Next”。取一個項目名稱,,比如 helloPython,,此外,還可以選擇 Python 的語言版本和解釋器版本,,如下圖所示: 點擊“Finish”,,完成項目創(chuàng)建,。然后你會進(jìn)入 PyDev 視圖,,進(jìn)行 Python 開發(fā)。這里,,我們就寫一個最簡單的程序,,進(jìn)行測試,。右鍵項目的 src 目錄,選擇“New” -> “PyDev Package”,,創(chuàng)建一個 Python 包,,此處也命名為 helloPython。再右鍵該 package,,“New” -> “PyDev Module”,,此處也命名為 helloPython,。雙擊打開 helloPython.py,添加如下代碼,。
右鍵項目,,選擇“Run As” -> “Python Run”,或 Ctrl+F11 運(yùn)行項目,。此時,,可以在下方的 Console 窗口,看到項目的運(yùn)行結(jié)果:hello world!,。 Python 預(yù)備知識編程語言編程語言(Programming Language),,是用來定義計算機(jī)程序的形式語言。它是一種被標(biāo)準(zhǔn)化的交流技巧,,用來向計算機(jī)發(fā)出指令,。計算機(jī)語言讓程序員能夠準(zhǔn)確地定義計算機(jī)所需要使用的數(shù)據(jù),并精確地定義在不同情況下所應(yīng)當(dāng)采取的行動,。 解釋上面的定義讀起來比較晦澀,,下面我通俗的解釋一下。 在人類發(fā)展史上,,一般將文字的出現(xiàn)視為文明的標(biāo)志,,無論是漢語,英語還是法語,,它們都是人類交流溝通的工具,。文字使得人類之間的溝通和交流變得有章可循,極大的提高了信息傳播的效率,。自計算機(jī)誕生之后,,人們一直希望給計算機(jī)賦予語言的特性,使計算機(jī)像人一樣的溝通,,而編程語言則可看作人與計算機(jī)之間“交流溝通”的工具,,它使得人類和計算機(jī)之間的高效交流得以實現(xiàn)。 高級編程語言在實踐中,,人們意識到人和計算機(jī)直接“交流”相當(dāng)困難,,計算機(jī)能夠直接理解的語言是0和1構(gòu)成的機(jī)器碼,而這種機(jī)器碼并不符合人類的認(rèn)知習(xí)慣,,因此,,高級編程語言應(yīng)運(yùn)而生。 何為高級呢,?指的是符合人類的理解習(xí)慣和思維方式,,遠(yuǎn)離計算機(jī)底層。高級編程語言(如 Java,,Python)使得人們能夠以相對容易的方式將期望計算機(jī)執(zhí)行的指令表達(dá)成文,。但是,,這種高級語言寫成的“文章”,計算機(jī)是無法直接理解的,,因此,,還需要一個“翻譯”,將人們編寫的高級語言按照規(guī)則翻譯成計算機(jī)能夠理解的機(jī)器語言,。根據(jù)編程語言的不同,,這里的“翻譯”也有顯著區(qū)別。關(guān)于人與計算機(jī)之間的“交流”,,簡略的示意圖如下: 與 Java 和 C++ 差別顯著學(xué)習(xí)過 C/C++,、Java 的讀者一定還記得定義變量的方法,如下例子,,定義 a,、b、c,、d 四個變量,,其數(shù)值類型分別為 int、double,、long,、float,,定義變量的時候,,我們需要“顯式”的聲明變量的類型,以便在內(nèi)存中為該變量開辟空間,,不同的數(shù)據(jù)類型占用的內(nèi)存空間是不同的,,所以必須要聲明。
與 C++ 和 Java 不同,,Python 中變量沒有類型,,更談不上聲明變量類型,變量只是對象的引用,,而 Python 的所有類型都是對象,,包括函數(shù)、模塊,、數(shù)字,、字符串、列表,、元組,、字典等等。 如下所示,,定義變量 a 并賦值,,同一個變量在同一段程序中三次被賦值不同的類型,,之所以能如此操作,就是因為變量沒有類型,,它可以指向任何類型,,單從這一點來看,Python 與 C++,、Java 差別是很明顯的,。
執(zhí)行結(jié)果: a= 12 a= ABCDE a= 1+4j 本課程實例的說明為了便于讀者更好的理解,本課程列舉了很多程序?qū)嵗?,其中部分程序涉及中文注釋,,另外,為了直觀的展現(xiàn)程序執(zhí)行的結(jié)果,,課程中的實例大量使用 print 語句將結(jié)果打印到控制臺,,便于讀者觀察。 關(guān)于本課程的實例風(fēng)格,,這里舉一個簡單的例子:
特別說明上面例子中,有兩點需要解釋一下,。
Python 默認(rèn)是以 ASCII 作為編碼方式的,,如果在自己的 Python 源碼中包含了中文(或者其他非英語系的語言),即使你把自己編寫的 Python 源文件以 UTF-8 格式保存了,,運(yùn)行時仍可能會報錯:SyntaxError: Non-ASCII character '\xe5' in file XXX.py on line YY, but no encoding declared; 解決辦法:在每一個包含中文或其它語言注釋的 Python 腳本文件的第一行,,加入以下聲明:
“#”表示注解,在代碼中輸入它的時候,,它右邊的所有內(nèi)容都將被忽略,,注解是極為有用的,不僅有助于別人理解自己的代碼,,也可以提示自己,。 通過命令運(yùn)行 Python 腳本上面的例子中,我們運(yùn)行 Python 腳本都是通過 Eclipse IDE(集成開發(fā)環(huán)境)完成的,,事實上運(yùn)行程序的方法很多,,對于 Python 語言而言,我們可以直接以命令的方式運(yùn)行,。 Windows 系統(tǒng): 進(jìn)入 Python 腳本 test.py 所在路徑下,,鍵入命令:Python test.py。 注意:Python 首字母大寫,。 Linux 或 Unix 系統(tǒng): 進(jìn)入 Python 腳本 test.py 所在路徑下,,鍵入命令:python test.py。 注意:Python 首字母小寫。 第02課:數(shù)字和運(yùn)算符數(shù)字Python 提供了三種數(shù)字類型,,即 int(整型),,float(浮點型),complex(復(fù)數(shù)),。
需要注意的是,,Python3 已經(jīng)廢棄了 Python2 的 Long(長整型),,在 Python3 中,int 的大小沒有限制,,可以作為 Long 使用,。 數(shù)字類型轉(zhuǎn)換Python 的三種數(shù)字類型可以進(jìn)行相互轉(zhuǎn)換,轉(zhuǎn)換方式為:數(shù)字類型+圓括號,,如下實例:
執(zhí)行結(jié)果:
常用的數(shù)學(xué)函數(shù)Python 提供了豐富的數(shù)學(xué)函數(shù)以降低編程實現(xiàn)的難度,,本節(jié)將介紹一些常用的函數(shù)。
執(zhí)行結(jié)果:
運(yùn)算符計算機(jī)的最基本用途之一就是執(zhí)行數(shù)學(xué)運(yùn)算,,作為一門計算機(jī)語言,,Python 也提供了一套豐富的運(yùn)算符來滿足各種運(yùn)算需求,。 Python 運(yùn)算符大致可分為7種,,即算術(shù)運(yùn)算符、比較運(yùn)算符,、賦值運(yùn)算符,、邏輯運(yùn)算符、位運(yùn)算符,、成員運(yùn)算符以及身份運(yùn)算符,。 算術(shù)運(yùn)算符對算術(shù)運(yùn)算,大家并不陌生,,常用的加減乘除就是算術(shù)運(yùn)算,。不過,在編程語言里,,算術(shù)運(yùn)算的符號特殊一些,,Python 中的算術(shù)運(yùn)算有7種:加(+),、減(-)、乘(),、除(/),、取模(%)、冪運(yùn)算(*)和取整預(yù)算(//),。以下通過實例演示算術(shù)運(yùn)算符的用法,。
執(zhí)行結(jié)果:
比較運(yùn)算符比較無處不在,大于,、小于,、等于、不等于……和 C/C++,、Java 等編程語言一樣,,Python 也提供了6種比較運(yùn)算符:>(大于),<(小于),,==(等于),,!=(不等于),,>=(大于等于),,<=(小于等于)。比較運(yùn)算的結(jié)果是一個布爾值,,True 或者 False,,如下實例:
執(zhí)行結(jié)果:
賦值運(yùn)算在前文的實例中已經(jīng)用到賦值運(yùn)算,如 X = 25,,就是一個最簡單的賦值運(yùn)算,,“=”就是最簡單的賦值運(yùn)算符。將簡單的賦值運(yùn)算與算術(shù)運(yùn)算結(jié)合,,Python 形成了豐富的賦值運(yùn)算符:+=,、-=、=,、/=,、%=、*=,、//=,。實例如下:
執(zhí)行結(jié)果:
邏輯運(yùn)算所謂邏輯運(yùn)算,就是:與,、或,、非。Python 中3種邏輯運(yùn)算符分別為:and(與),or(或),,not(非),,邏輯運(yùn)算的結(jié)果是布爾值:True 或者 False。
如下實例:
執(zhí)行結(jié)果:
位運(yùn)算程序中的所有數(shù)在計算機(jī)內(nèi)存中都是以二進(jìn)制的形式儲存的,。位運(yùn)算就是直接對整數(shù)在內(nèi)存中的二進(jìn)制位進(jìn)行操作,。Python 中有6種位運(yùn)算符:
舉個例子:a=21,b=6,將兩個數(shù)轉(zhuǎn)換為二進(jìn)制形式進(jìn)行位運(yùn)算,。
成員運(yùn)算除了上文介紹的5種運(yùn)算符,,Python 還支持成員運(yùn)算符。介紹成員運(yùn)算符之前,,我們需要提前了解一個概念:數(shù)據(jù)結(jié)構(gòu),,如字符串、列表,、元組,、字典。在接下來的章節(jié)中我們將詳細(xì)介紹這些基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),。字符串,、列表、字典,,它們就像一個集合,,其中包含若干元素,這些元素就是集合的成員,;對于一個給定的元素,,它有可能在一個給定的集合中,也可能不在,,Python 中采用成員運(yùn)算符來判斷元素是否屬于成員,,成員運(yùn)算的結(jié)果為布爾值,True 或者 False,。 如下實例:
執(zhí)行結(jié)果:
身份運(yùn)算符身份運(yùn)算符用于比較兩個標(biāo)識符所引用對象的存儲單元,,計算結(jié)果為布爾值,包含兩個運(yùn)算符:is 和 is not,,分別用于判斷兩個標(biāo)識符是否引用自一個對象,。關(guān)于存儲單元的比較,涉及到對內(nèi)存模型的理解,,本節(jié)不做詳述,,留到后面章節(jié)介紹。 |
|
來自: 東西二王 > 《編程開發(fā)》