初識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.6 to PATH”(將Python 3.6添加到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)件安裝時因為缺失底層依賴庫而失敗)。
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
# ... 此處省略下面的代碼 ...
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、TextMate、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ā)中被采用。
IPython - 更好的交互式編程工具
IPython是一種基于Python的交互式解釋器。相較于原生的Python交互式環(huán)境,IPython提供了更為強大的編輯和交互功能??梢酝ㄟ^Python的包管理工具pip安裝IPython和Jupyter,具體的操作如下所示。
pip install ipython
或
pip3 install ipython
安裝成功后,可以通過下面的ipython命令啟動IPython,如下圖所示。
當(dāng)然,我們也可以通過安裝Jupyter工具并運行名為notebook的程序在瀏覽器窗口中進行交互式代碼編寫操作。
pip install jupyter
或
pip3 intall jupyter
然后執(zhí)行下面的命令:
jupyter notebook
Sublime - 文本編輯神器
-
首先可以通過官方網(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》進行了介紹,有興趣的讀者可以選擇閱讀。
練習(xí)
-
在Python交互環(huán)境中查看下面的代碼結(jié)果,并試著將這些內(nèi)容翻譯成中文。
import this
說明:當(dāng)前鍵入上面的命令后會在交互式環(huán)境中看到如下所示的輸出,這段內(nèi)容被稱為“Python之禪”,里面講述的道理不僅僅適用于Python,也適用于其他編程語言。
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those! -
學(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()
好書推薦、視頻分享,公眾號
讀書ReadBook
與您一起進步
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
