由淺入深學python(一)
由淺入深學python(一)
python是一門簡約不簡單的程式語言。它和java同屬解釋型語言,先將原始碼編譯成字元碼, 而後交給自帶的虛擬機器pvm解釋執行。它的語法簡介優雅,原始碼可讀性極高,命名得當甚至可以不寫註釋也看得懂, 程式碼可維護性好。python是種很中庸全能的指令碼語言。從系統工具到web應用,從命令列指令碼到Gui, 各個領域都可以勝任。常見的應用領域主要集中在伺服器維護,web應用,以及科學研究領域。 google,豆瓣,知乎,python都是主力開發語言。許多遊戲的後臺指令碼也是python。 而在資料分析領域python也非常受歡迎,由於python有強大的numpy模組以及在字串, html和xml文字處理方面的強大能力,近來其受歡迎程度甚至有超越R語言及matlab的趨勢。
目錄
前置工作
本篇將記錄基本的環境搭建,pip包管理工具,虛擬環境工具,文字編輯器和互動命令列工具。
版本選擇和環境搭建
python版本非常多,除了官方的python2,python3外還有pypy,以及jpython等基於其他語言的python 直譯器,他們之間往往相互不完全相容。新手最糾結的就是選哪個版本開始學習了。一般而言python2.7 有最好的第三方package相容性,python3有更優秀的語言特性,比如最直觀的語言層面utf-8編碼支援; 而pypy是python的未來,它擁有更好的執行效率和對多執行緒支援。
那麼究竟到底選哪個學呢?
我個人覺得學習的話應該先學python2.7,這個版本基本不會有大變化了,而3.X還在繼續更新。 這個版本學的七七八八了python3自然也不會問題。
我想全都安裝上想用哪個就用哪個可以麼?
當然可以,雖然python不像ruby有官方版本管理器rvm,但人民群眾的力量是偉大的!linux和mac下可以安裝一個
叫pyenv的神奇shell工具,這是個非常方便的python版本管理器。windows下也有個類似的,叫pywin,
也是命令列工具,可以用pip install pywin
安裝我沒跑windows的電腦就不寫具體的了,地址
https://github.com/davidmarble/pywin。
注意: 我的系統是macosx,我只測試了pyenv可以在mac上通過homebrew安裝並可以執行,git方法並沒有測試。
pyenv介紹
pyenv的安裝
這是pyenv的github地址https://github.com/yyuu/pyenv可以跟著裡面的指導操作,為了照顧英文捉雞的同學我講個大概
mac--通過homeberry安裝
$ brew update $ brew install pyenv
安裝完後
$cd ~ $echo 'if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi' >> .bash_profile $source .bash_profile
這樣就算配置好了,試試能不能用~
$pyenv
看看是不是輸出了他的幫助,如果是的話就安裝好了~
更新
如果要更新,可以執行
brew upgrade pyenv
來更新linux--通過git安裝
$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
更新
$ pyenv update
解除安裝
$ rm -fr ~/.pyenv
pyenv的使用
檢視可安裝的版本
$pyenv install --list
安裝指定版本
$pyenv install pythonVersion
選擇上一步中輸出的一個版本安裝,純數字的是官方版本,其他有的是整合包有的是其他平臺的直譯器。 推薦搞資料分析的安裝
anaconda-X
這是個科學計算工具包,自帶ipython notebook,很好用。 就是有點大,可以在http://repo.continuum.io/archive/下載好了後放在~/.pyenv/cache
下再執行安裝。 記得下載.sh
副檔名的檔案。更新資料庫
$pyenv rehash
安裝或者解除安裝了模組或python版本後應當執行資料庫更新。
檢視安裝了的版本
$pyenv versions
其中system指系統之前的預設版本,前面有*的說明是正在使用的版本。
設定使用python的版本
$pyenv global pythonVersion #設定全域性python版本 $pyenv shell pythonVersion #設定本次shell中臨時執行的python版本 $pyenv local pythonVersion #設定本次電腦啟動時臨時執行的python版本
解除安裝python版本
$pyenv uninstall pythonVersion
為啥非要用命令列工具呢?
一方面是個人習慣,一方面命令列不用在檔案系統裡各種找可執行程式,記住幾個單詞就可以工作了。
模組安裝工具pip
pip是python的官方第三方包管理工具,收錄了大部分的第三方包。多數自帶python的系統如mac osx,
ubuntu都已經有現成的pip安裝著了。如果確實沒有pip可以去
https://pip.pypa.io/en/latest/installing.html#python-os-support
學習使用和下載,get-pip.py檔案下載到本地後,cd到同一資料夾下使用python get-pip.py
就可以安裝了。
請務必一定確保要用的python及後面的虛擬環境可以使用pip工具,這是基礎工具。
pip基本使用
安裝模組
$pip install packageName #最新的版本 $pip install packageName==1.0.0 #指定版本 $pip install 'packageName>=1.0.0' #最低版本 $pip install http://my.package.repo/SomePackage-1.0.4.zip #從指定網址資源安裝 $pip install ./downloads/SomePackage-1.0.4.tar.gz #指定本地位置安裝 $pip install --find-links=http://some.archives.com/archives #從指定url下載安裝 $pip install --find-links=./downloads/ #從指定path下載安裝 $pip install --upgrade packageName #更新一個已經安裝過的過期模組
從需求檔案安裝模組
$pip freeze > requirements.txt #將當前pip管理的模組資訊儲存進文字檔案 $pip install -r requirements.txt #從文字檔案安裝依賴的模組
解除安裝
$pip uninstall packageName
查詢
$pip search name
檢視模組資訊
$pip show packageName
檢視pip管理了哪些模組
$pip list $pip list --outdated #檢視過期的模組
虛擬環境
我比較建議寫新的工程時建立一個虛擬環境,這樣便於管理依賴,如果是要在伺服器上執行的應用,也就便於部署。
python3已經自帶了虛擬環境工具venv
,而python2還沒有,需要安裝一個叫virtualenv
的模組才能使用虛擬環境。
virtualenv
可以用pip安裝,這兩個工具用法完全相同,只是名字不同而已。
下面是使用方法,virtualenv
的用法只是把pyvenv
替換成virtualenv
。因此不再複述。
venv基本使用
建立虛擬環境資料夾
$pyvenv venv
使用虛擬環境
$source venv/bin/activate
使用後會看到你的命令列每行前面多出一個
(venv)
字樣,表示你在使用虛擬環境退出虛擬環境
對於非windows
$deactivate
對於windows
> path_to_env\Scripts\activate
文字編輯器
理論上是個文字編輯器就可以寫python程式,一般有自動補全和關鍵字高亮就可以了。推薦使用atom
https://github.com/atom/atom/releases/
可以命令列開啟,有優秀的包管理系統,一個非常先進好用的基於html技術的文字編輯器。記得安裝好後將tab鍵
改成4個空格。不建議使用IDE。
寫程式必須對程式的細節瞭然於心,無論是程式碼還是工程檔案結構。IDE封裝了很多細節,不利於這一點。
學習IDE的使用同樣是件很費事的工作,比如eclipse。這個反人類的工具不知道誰設計出來的。
亂七八糟的設定不知所云,包管理也是一坨,還巨佔資源,我寫java都不會用它。而且由於IDE的不透明特性,如果碰到配置出錯不利於找到錯誤所在。
互動shell工具
這裡得隆重推薦ipython notebook--一個基於瀏覽器的python互動介面,優雅大方,功能強大。 不止可以執行python指令碼,還有使用shell命令和自帶的魔術命令,自動補全和關鍵字高亮自不必說,非常強大。
ipython notebook 安裝
anaconda已經自帶了該工具,其他的則需要安裝
$pip install "ipython[notebook]"
ipython notebook 使用
ipython notebook 使用shell命令
只要在shell命令前面加!就可以了。
ipython notebook 使用魔術命令
ipython notebook封裝了許多常用命令,被稱為魔術命令。可以用
%lsmagic
檢視所有魔術命令, 具體可以檢視http://nbviewer.ipython.org/github/ipython/ipython/blob/3.x/examples/IPython%20Kernel/Cell%20Magics.ipynb
相關文章
- promise由淺入深Promise
- MongoDB由淺入深MongoDB
- javascript由淺入深JavaScript
- JavaScript Promise由淺入深JavaScriptPromise
- MySQL索引由淺入深MySql索引
- 由淺入深學C# 視訊教程C#
- 由淺入深學習JavaScript Debug技巧JavaScript
- 物件導向-由淺入深物件
- 純手寫Promise,由淺入深Promise
- Vue.js 2.0 由淺入深Vue.js
- iOS架構由淺入深 | MVVMiOS架構MVVM
- 由淺入深理解 IOC 和 DI
- Git由淺入深之分支管理Git
- 前端如何理解正則-由淺入深的學習前端
- C#非同步程式設計由淺入深(一)C#非同步程式設計
- MVP架構由淺入深篇一(基礎版)MVP架構
- Git由淺入深之操作與指令Git
- 【由淺入深學MySQL】- MySQL連線查詢詳解MySql
- 由淺入深理解Dubbo的SPI機制
- 由淺入深 docker 系列: (6) 映象分層Docker
- 由淺入深 docker 系列: (2) docker 構建Docker
- 由淺入深完全理解Java動態代理Java
- Java 反射由淺入深 | 進階必備Java反射
- Git 由淺入深之細說變基 (rebase)Git
- 由淺入深 docker 系列: (5) 資源隔離Docker
- 由淺入深 docker 系列: (3) docker-composeDocker
- 第十八節:Skywalking由淺入深
- 【由淺入深_打牢基礎】HOST頭攻擊
- 【Fastjson】Fastjson反序列化由淺入深ASTJSON
- Git由淺入深之遠端主機(git remote)GitREM
- [轉帖]由淺入深瞭解GC入門篇(一):什麼是垃圾回收?GC
- 由淺到淺入門批量渲染(一)
- 解析命運密碼--由淺入深教你快速學會推斷自己一生運氣密碼
- 由淺入深 docker 系列:(4) 容器與虛擬機器Docker虛擬機
- 零基礎深度學習入門:由淺入深理解反向傳播演算法深度學習反向傳播演算法
- 由淺入深瞭解羚瓏平臺統一接入服務 —— Monet
- 由淺入深 學習 Android Binder(三)- java binder深究(從java到native)AndroidJava
- 由淺入深,從掌握Promise的基本使用到手寫PromisePromise