初識Python
Python簡介
Python的歷史
- 1989年圣誕節(jié):Guido von Rossum開始寫Python語言的編譯器。
- 1991年2月:第一個Python編譯器(同時也是解釋器)誕生,它是用C語言實現(xiàn)的(后面又出現(xiàn)了Java和C#實現(xiàn)的版本Jython和IronPython,以及PyPy、Brython、Pyston等其他實現(xiàn)),可以調(diào)用C語言的庫函數(shù)。在最早的版本中,Python已經(jīng)提供了對“類”,“函數(shù)”,“異常處理”等構(gòu)造塊的支持,同時提供了“列表”和“字典”等核心數(shù)據(jù)類型,同時支持以模塊為基礎(chǔ)來構(gòu)造應(yīng)用程序。
- 1994年1月:Python 1.0正式發(fā)布。
- 2000年10月16日:Python 2.0發(fā)布,增加了實現(xiàn)完整的垃圾回收,提供了對Unicode的支持。與此同時,Python的整個開發(fā)過程更加透明,社區(qū)對開發(fā)進度的影響逐漸擴大,生態(tài)圈開始慢慢形成。
- 2008年12月3日:Python 3.0發(fā)布,它并不完全兼容之前的Python代碼,不過因為目前還有不少公司在項目和運維中使用Python 2.x版本,所以Python 3.x的很多新特性后來也被移植到Python 2.6/2.7版本中。
目前我們使用的Python 3.7.x的版本是在2018年發(fā)布的,Python的版本號分為三段,形如A.B.C。其中A表示大版本號,一般當(dāng)整體重寫,或出現(xiàn)不向后兼容的改變時,增加A;B表示功能更新,出現(xiàn)新功能時增加B;C表示小的改動(例如:修復(fù)了某個Bug),只要有修改就增加C。如果對Python的歷史感興趣,可以閱讀名為《Python簡史》的博文。
Python的優(yōu)缺點
Python的優(yōu)點很多,簡單的可以總結(jié)為以下幾點。
- 簡單和明確,做一件事只有一種方法。
- 學(xué)習(xí)曲線低,跟其他很多語言相比,Python更容易上手。
- 開放源代碼,擁有強大的社區(qū)和生態(tài)圈。
- 解釋型語言,天生具有平臺可移植性。
- 支持兩種主流的編程范式(面向?qū)ο缶幊毯秃瘮?shù)式編程)都提供了支持。
- 可擴展性和可嵌入性,可以調(diào)用C/C++代碼,也可以在C/C++中調(diào)用Python。
- 代碼規(guī)范程度高,可讀性強,適合有代碼潔癖和強迫癥的人群。
Python的缺點主要集中在以下幾點。
- 執(zhí)行效率稍低,因此計算密集型任務(wù)可以由C/C++編寫。
- 代碼無法加密,但是現(xiàn)在很多公司都不銷售賣軟件而是銷售服務(wù),這個問題會被淡化。
- 在開發(fā)時可以選擇的框架太多(如Web框架就有100多個),有選擇的地方就有錯誤。
Python的應(yīng)用領(lǐng)域
目前Python在Web應(yīng)用開發(fā)、云基礎(chǔ)設(shè)施、DevOps、網(wǎng)絡(luò)爬蟲開發(fā)、數(shù)據(jù)分析挖掘、機器學(xué)習(xí)等領(lǐng)域都有著廣泛的應(yīng)用,因此也產(chǎn)生了Web后端開發(fā)、數(shù)據(jù)接口開發(fā)、自動化運維、自動化測試、科學(xué)計算和可視化、數(shù)據(jù)分析、量化交易、機器人開發(fā)、圖像識別和處理等一系列的職位。
搭建編程環(huán)境
Windows環(huán)境
可以在Python官方網(wǎng)站下載到Python的Windows安裝程序(exe文件),需要注意的是如果在Windows 7環(huán)境下安裝Python 3.x,需要先安裝Service Pack 1補丁包(可以通過一些工具軟件自動安裝系統(tǒng)補丁的功能來安裝),安裝過程建議勾選“Add Python 3.x to PATH”(將Python 3.x添加到PATH環(huán)境變量)并選擇自定義安裝,在設(shè)置“Optional Features”界面最好將“pip”、“tcl/tk”、“Python test suite”等項全部勾選上。強烈建議選擇自定義的安裝路徑并保證路徑中沒有中文。安裝完成會看到“Setup was successful”的提示。如果稍后運行Python程序時,出現(xiàn)因為缺失一些動態(tài)鏈接庫文件而導(dǎo)致Python解釋器無法工作的問題,可以按照下面的方法加以解決。
如果系統(tǒng)顯示api-ms-win-crt*.dll文件缺失,可以參照《api-ms-win-crt*.dll缺失原因分析和解決方法》一文講解的方法進行處理或者直接在微軟官網(wǎng)下載Visual C++ Redistributable for Visual Studio 2015文件進行修復(fù);如果是因為更新Windows的DirectX之后導(dǎo)致某些動態(tài)鏈接庫文件缺失問題,可以下載一個DirectX修復(fù)工具進行修復(fù)。
Linux環(huán)境
Linux環(huán)境自帶了Python 2.x版本,但是如果要更新到3.x的版本,可以在Python的官方網(wǎng)站下載Python的源代碼并通過源代碼構(gòu)建安裝的方式進行安裝,具體的步驟如下所示。
安裝依賴庫(因為沒有這些依賴庫可能在源代碼構(gòu)件安裝時因為缺失底層依賴庫而失?。?/p>
yum -y install wget gcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
下載Python源代碼并解壓縮到指定目錄。
wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
xz -d Python-3.7.3.tar.xz
tar -xvf Python-3.7.3.tar
切換至Python源代碼目錄并執(zhí)行下面的命令進行配置和安裝。
cd Python-3.7.3
./configure --prefix=/usr/local/python37 --enable-optimizations
make && make install
修改用戶主目錄下名為.bash_profile的文件,配置PATH環(huán)境變量并使其生效。
cd ~
vim .bash_profile
# ... 此處省略上面的代碼 ...
export PATH=$PATH:/usr/local/python37/bin
# ... 此處省略下面的代碼 ...
激活環(huán)境變量。
source .bash_profile
macOS環(huán)境
macOS也自帶了Python 2.x版本,可以通過Python的官方網(wǎng)站提供的安裝文件(pkg文件)安裝Python 3.x的版本。默認(rèn)安裝完成后,可以通過在終端執(zhí)行python命令來啟動2.x版本的Python解釋器,可以通過執(zhí)行python3命令來啟動3.x版本的Python解釋器。
從終端運行Python程序
確認(rèn)Python的版本
可以Windows的命令行提示符中鍵入下面的命令。
python --version
或者是在Linux或macOS系統(tǒng)的終端中鍵入下面的命令。
python3 --version
當(dāng)然也可以先輸入python或python3進入交互式環(huán)境,再執(zhí)行以下的代碼檢查Python的版本。
import sys
print(sys.version_info)
print(sys.version)
編寫Python源代碼
可以用文本編輯工具(推薦使用Sublime、Atom、Visual Studio Code等高級文本編輯工具)編寫Python源代碼并用py作為后綴名保存該文件,代碼內(nèi)容如下所示。
print('hello, world!')
運行程序
切換到源代碼所在的目錄并執(zhí)行下面的命令,看看屏幕上是否輸出了"hello, world!"。
python hello.py
或
python3 hello.py
代碼中的注釋
注釋是編程語言的一個重要組成部分,用于在源代碼中解釋代碼的作用從而增強程序的可讀性和可維護性,當(dāng)然也可以將源代碼中不需要參與運行的代碼段通過注釋來去掉,這一點在調(diào)試程序的時候經(jīng)常用到。注釋在隨源代碼進入預(yù)處理器或編譯時會被移除,不會在目標(biāo)代碼中保留也不會影響程序的執(zhí)行結(jié)果。
- 單行注釋 - 以#和空格開頭的部分
- 多行注釋 - 三個引號開頭,三個引號結(jié)尾
"""
第一個Python程序 - hello, world!
向偉大的Dennis M. Ritchie先生致敬
Version: 0.1
Author: 駱昊
"""
print('hello, world!')
# print("你好,世界!")
print('你好', '世界')
print('hello', 'world', sep=', ', end='!')
print('goodbye, world', end='!\n')
其他工具介紹
IDLE - 自帶的集成開發(fā)工具
IDLE是安裝Python環(huán)境時自帶的集成開發(fā)工具,如下圖所示。但是由于IDLE的用戶體驗并不是那么好所以很少在實際開發(fā)中被采用。
[圖片上傳失敗...(image-c2a38b-1562911677679)]
IPython - 更好的交互式編程工具
IPython是一種基于Python的交互式解釋器。相較于原生的Python交互式環(huán)境,IPython提供了更為強大的編輯和交互功能??梢酝ㄟ^Python的包管理工具pip安裝IPython和Jupyter,具體的操作如下所示。
pip install ipython
或
pip3 install ipython
安裝成功后,可以通過下面的ipython命令啟動IPython,如下圖所示。
[圖片上傳失敗...(image-88e931-1562911677679)]
當(dāng)然,我們也可以通過安裝Jupyter工具并運行名為notebook的程序在瀏覽器窗口中進行交互式代碼編寫操作。
pip install jupyter
或
pip3 intall jupyter
然后執(zhí)行下面的命令:
jupyter notebook
[圖片上傳失敗...(image-f030a3-1562911677679)]
Sublime / Visual Studio Code - 高級文本編輯器
[圖片上傳失敗...(image-13ff86-1562911677679)]
首先可以通過官方網(wǎng)站下載安裝程序安裝Sublime 3或Sublime 2。
-
安裝包管理工具。
- 通過快捷鍵Ctrl+`或者在View菜單中選擇Show Console打開控制臺,輸入下面的代碼。
- Sublime 3
import urllib.request,os;pf='Package Control.sublime-package';ipp=sublime.installed_packages_path();urllib.request.install_opener(urllib.request.build_opener(urllib.request.ProxyHandler()));open(os.path.join(ipp,pf),'wb').write(urllib.request.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read())- Sublime 2
import urllib2,os;pf='Package Control.sublime-package';ipp=sublime.installed_packages_path();os.makedirs(ipp)ifnotos.path.exists(ipp)elseNone;urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler()));open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read());print('Please restart Sublime Text to finish installation')- 手動安裝瀏覽器輸入 https://sublime.wbond.net/Package%20Control.sublime-package 下載這個文件
下載好以后,打開sublime text,選擇菜單Preferences->Browse Packages... 打開安裝目錄
此時會進入到一個叫做Packages的目錄下,點擊進入上一層目錄Sublime Text3,在此目錄下有一個文件夾叫做Installed Packages,把剛才下載的文件放到這里就可以了。然后重啟sublime text3,觀察Preferences菜單最下邊是否有Package Settings 和Package Control兩個選項,如果有,則代表安裝成功了。
-
安裝插件。通過Preference菜單的Package Control或快捷鍵Ctrl+Shift+P打開命令面板,在面板中輸入Install Package就可以找到安裝插件的工具,然后再查找需要的插件。我們推薦大家安裝以下幾個插件:
- SublimeCodeIntel - 代碼自動補全工具插件。
- Emmet - 前端開發(fā)代碼模板插件。
- Git - 版本控制工具插件。
- Python PEP8 Autoformat - PEP8規(guī)范自動格式化插件。
- ConvertToUTF8 - 將本地編碼轉(zhuǎn)換為UTF-8。
說明:事實上Visual Studio Code可能是更好的選擇,它不用花錢并提供了更為完整和強大的功能,有興趣的讀者可以自行研究。
PyCharm - Python開發(fā)神器
PyCharm的安裝、配置和使用在《玩轉(zhuǎn)PyCharm》進行了介紹,有興趣的讀者可以選擇閱讀。
[圖片上傳失敗...(image-a62ea0-1562911677679)]
練習(xí)
-
在Python交互環(huán)境中查看下面的代碼結(jié)果,并試著將這些內(nèi)容翻譯成中文。
import this說明:當(dāng)前鍵入上面的命令后會在交互式環(huán)境中看到如下所示的輸出,這段內(nèi)容被稱為“Python之禪”,里面講述的道理不僅僅適用于Python,也適用于其他編程語言。
-
學(xué)習(xí)使用turtle在屏幕上繪制圖形。
說明:turtle是Python內(nèi)置的一個非常有趣的模塊,特別適用于讓小朋友體會什么是編程,它最早是Logo語言的一部分,Logo語言是Wally Feurzig和Seymour Papert在1966發(fā)明的編程語言.
import turtle turtle.pensize(4) turtle.pencolor('red') turtle.forward(100) turtle.right(90) turtle.forward(100) turtle.right(90) turtle.forward(100) turtle.right(90) turtle.forward(100) turtle.mainloop()