日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747


程序員編程分享 2020-02-24 15:06:26

 

當我開始學習Python的時候,有些事我希望我一早就知道。我花費了很多時間才學會這些東西。我想要把這些重點都編纂到一篇文章當中。這篇文章的目標讀者,是剛剛開始學習Python語言的有經驗的程序員,想要跳過前幾個月研究Python使用的那些他們已經在用的類似工具。包管理和標準工具這兩節對于初學者來說同樣很有幫助。

這是小編收集的python學習資料,希望對你們有幫助,關注,轉發,私信小編“01”即可獲取!

 

我的經驗主要基于Python 2.7,但是大多數的工具對任何版本都有效。

如果你從來沒有使用過Python,我強烈建議你閱讀Python introduction,因為你需要知道基本的語法和類型。

包管理

Python世界最棒的地方之一,就是大量的第三方程序包。同樣,管理這些包也非常容易。按照慣例,會在 requirements.txt 文件中列出項目所需要的包。每個包占一行,通常還包含版本號。這里有一個例子,本博客使用Pelican:

騰訊在職八年Python開發經驗的程序員寫給初學者的總結,希望有用

 

Python%20程序包有一個缺陷是,它們默認會進行全局安裝。我們將要使用一個工具,使我們每個項目都有一個獨立的環境,這個工具叫virtualenv。我們同樣要安裝一個更高級的包管理工具,叫做pip,他可以和virtualenv配合工作。

首先,我們需要安裝pip。大多數python安裝程序已經內置了easy_install(python默認的包管理工具),所以我們就使用easy_install%20pip來安裝pip。這應該是你最后一次使用easy_install%20了。如果你并沒有安裝easy_install%20,在linux系統中,貌似從python-setuptools%20包中可以獲得。

如果你使用的Python版本高于等于3.3,%20那么Virtualenv%20已經是標準庫的一部分了,所以沒有必要再去安裝它了。

下一步,你希望安裝virtualenv和virtualenvwrApper。Virtualenv使你能夠為每個項目創造一個獨立的環境。尤其是當你的不同項目使用不同版本的包時,這一點特別有用。Virtualenv%20wrapper%20提供了一些不錯的腳本,可以讓一些事情變得容易。

 

當virtualenvwrapper安裝后,它會把virtualenv列為依賴包,所以會自動安裝。

打開一個新的shell,輸入mkvirtualenv test 。如果你打開另外一個shell,則你就不在這個virtualenv中了,你可以通過workon test 來啟動。如果你的工作完成了,可以使用deactivate 來停用。

騰訊在職八年Python開發經驗的程序員寫給初學者的總結,希望有用

 


IPython

IPython是標準Python交互式的編程環境的一個替代品,支持自動補全,文檔快速訪問,以及標準交互式編程環境本應該具備的很多其他功能。

當你處在一個虛擬環境中的時候,可以很簡單的使用pip install ipython 來進行安裝,在命令行中使用ipython 來啟動

騰訊在職八年Python開發經驗的程序員寫給初學者的總結,希望有用

 

另一個不錯的功能是”筆記本”,這個功能需要額外的組件。安裝完成后,你可以使用ipython notebook,而且會有一個不錯的網頁UI,你可以創建筆記本。這在科學計算領域很流行。

騰訊在職八年Python開發經驗的程序員寫給初學者的總結,希望有用

 


測試

我推薦使用nose或是py.test。我大部分情況下用nose。它們基本上是類似的。我將講解nose的一些細節。

這里有一個人為創建的可笑的使用nose進行測試的例子。在一個以test_開頭的文件中的所有以test_開頭的函數,都會被調用:

騰訊在職八年Python開發經驗的程序員寫給初學者的總結,希望有用

 

不出所料,當運行nose的時候,我們的測試沒有通過。

騰訊在職八年Python開發經驗的程序員寫給初學者的總結,希望有用

 

nose.tools中同樣也有一些便捷的方法可以調用

騰訊在職八年Python開發經驗的程序員寫給初學者的總結,希望有用

 

如果你想使用更加類似JUnit的方法,也是可以的:

騰訊在職八年Python開發經驗的程序員寫給初學者的總結,希望有用

 

開始測試:

騰訊在職八年Python開發經驗的程序員寫給初學者的總結,希望有用

 

卓越的Mock庫包含在Python 3 中,但是如果你在使用Python 2,可以使用pypi來獲取。這個測試將進行一個遠程調用,但是這次調用將耗時10s。這個例子顯然是人為捏造的。我們使用mock來返回樣本數據而不是真正的進行調用。

騰訊在職八年Python開發經驗的程序員寫給初學者的總結,希望有用

 

當然,我們的測試需要很長的時間。

騰訊在職八年Python開發經驗的程序員寫給初學者的總結,希望有用

 

太慢了!因此我們會問自己,我們在測試什么?我們需要測試遠程調用是否有用,還是我們要測試當我們獲得數據后要做什么?大多數情況下是后者。讓我們擺脫這個愚蠢的遠程調用吧:

騰訊在職八年Python開發經驗的程序員寫給初學者的總結,希望有用

 

好吧,讓我們再試一次:

騰訊在職八年Python開發經驗的程序員寫給初學者的總結,希望有用

 

好多了。記住,這個例子進行了荒唐的簡化。就我個人來講,我僅僅會忽略從遠程系統的調用,而不是我的數據庫調用。

nose-progressive是一個很好的模塊,它可以改善nose的輸出,讓錯誤在發生時就顯示出來,而不是留到最后。如果你的測試需要花費一定的時間,那么這是件好事。

pip install nose-progressive 并且在你的nosetests中添加--with-progressive


調試

iPDB是一個極好的工具,我已經用它查出了很多匪夷所思的bug。pip install ipdb 安裝該工具,然后在你的代碼中import ipdb; ipdb.set_trace(),然后你會在你的程序運行時,獲得一個很好的交互式提示。它每次執行程序的一行并且檢查變量。

騰訊在職八年Python開發經驗的程序員寫給初學者的總結,希望有用

 

python內置了一個很好的追蹤模塊,幫助我搞清楚發生了什么。這里有一個沒什么用的python程序:

騰訊在職八年Python開發經驗的程序員寫給初學者的總結,希望有用

 

這里是對這個程序的追蹤結果:

騰訊在職八年Python開發經驗的程序員寫給初學者的總結,希望有用

 

當你想要搞清楚其他程序的內部構造的時候,這個功能非常有用。如果你以前用過strace,它們的工作方式很相像

在一些場合,我使用pycallgraph來追蹤性能問題。它可以創建函數調用時間和次數的圖表。

騰訊在職八年Python開發經驗的程序員寫給初學者的總結,希望有用

 

最后,objgraph對于查找內存泄露非常有用。這里有一篇關于如何使用它查找內存泄露的好文。


Gevent

Gevent 是一個很好的庫,封裝了Greenlets,使得Python具備了異步調用的功能。是的,非常棒。我最愛的功能是Pool,它抽象了異步調用部分,給我們提供了可以簡單使用的途徑,一個異步的map()函數:

騰訊在職八年Python開發經驗的程序員寫給初學者的總結,希望有用

 

非常重要的是,需要注意這段代碼頂部對gevent monkey進行的補丁,如果沒有它的話,就不能正確的運行。如果我們讓Python連續調用 fetch_url 3次,通常我們期望這個過程花費30秒時間。使用gevent:

騰訊在職八年Python開發經驗的程序員寫給初學者的總結,希望有用

 

如果你有很多數據庫調用或是從遠程URLs獲取,這是非常有用的。我并不是很喜歡回調函數,所以這一抽象對我來說效果很好。

分享到:
標簽:騰訊
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定