導航:首頁 > 編程語言 > python如何開發文檔管理

python如何開發文檔管理

發布時間:2023-05-29 19:23:45

python主要用來幹嘛

整理了Python的7大就業方向,希望大家能找到適合自己的,然後學習下去,完成人生的目標。
1、Web開發(Python後端)
Python有很多優秀的Web開發框架,如Flask、Django、Bootstar等,可以幫助你快速搭建一個網站。當需要一個新功能時,用Python只需添加幾行代碼即可,這受到了很多初創型公司的一致歡迎。
像知乎、豆瓣、小米這樣的大廠,最早的網站都是用Python搭建的,國外則更多,如YouTube 、Quora、Reddit、Instagram、Netflix等代表地球頂級流量的大站,都構建在Python之上。
平均薪資:15~20K
技能要求:前端基礎、Python基礎、主流Python Web框架(Flask、Django等)、資料庫等
2、Python爬蟲工程師
顧名思義,就是用Python收集和爬取互聯網的信息,也是小夥伴們入坑Python的第一驅動力。靠人力一星期才能完成的工作,你泡著咖啡、跑10分鍾爬蟲即可,又裝X又實用,學會Python爬蟲後,即使不做程序員的工作也能加分不少。
平均薪資:15~25K
技能要求:前端基礎、Python爬蟲庫、資料庫、JS反爬等
友情提示:注意法律風險
3、Python數據分析師
這個時代,數據和黃金一樣寶貴,現在最火的公司如:今日頭條、抖音、快手等,產品都建立在對用戶的分析之上,更不用說淘寶、京東、拼多多這些 「定製化推薦」 的老手。
可以說,所有的商業公司都需要這樣一個角色,Python數據分析師也成了目前最火的職業之一。
Python是目前數據分析業務中,最常用的語言。學會Python後,基本可以滿足數據分析經理的招聘需求。
平均薪資:10~25K
技能要求:統計學基礎、Python的數據分析庫(Pandas、NumPy、matplolib)、資料庫、機器學習框架(高端職位需要)
4、AI工程師
人工智慧是目前最火的方向之一,薪資待遇非常高(土豪的代名詞)。從招聘網站上可以看到,80K、100K 的職位也有很多,流下了沒有技術的淚水,當然這些職位的要求也相對較高。
Python是人工智慧時代的頭牌語言,不管是機器學習(Machine Learning)還是深度學習(Deep Learning),最常用的工具和框架都需要用Python調用,如Numpy、scipy、pandas、matplotlib、PyTorch、TensorFlow等,因此Python是人工智慧工程師的必備技能之一。
薪資:20~40K
技能要求:統計學基礎、Python、數據分析庫、機器學習、深度學習框架
5、自動化運維工程師
運維工程師經常要監控上百台機器的運行,或同時部署的情況。使用Python可以自動化批量管理伺服器,起到1個人頂10個人的效果。
自動化運維也是Python的主要應用方向之一,它在系統管理、文檔管理方面都有很強大的功能。
平均薪資:15~25K
技能要求:Python、shell、linux、資料庫、openpyxl庫等
6、自動化測試工程師
測試的工作是枯燥和重復的,在過去,每次產品更新,都要重復測試一遍,效率低而且容易出錯。
Python提供了很多自動化測試的框架,如Selenium、Pytest等,避免了大量的重復工作,Python自動化測試也變得越來越流行。
平均薪資:10~20K
技能要求:Python、自動化測試框架、Linux等
7、Python游戲開發
Python游戲開發的招聘集中在游戲伺服器領域,主要負責網路游戲的伺服器功能開發、性能優化等工作。
平均薪資:15~25K
技能要求:Python、Python Web框架、Linux、資料庫、Nginx等
通過以上一系列的講解,相信各位剛入門Python編程語言的人,對於Python主要用來做什麼這個問題有了一定的了解。Python編程語言應用廣泛,就業方向也是十分廣闊,當下正是學習Python的好時機。

㈡ python主要可以做什麼

Python幾乎無所不能,通俗易懂、容易入門、功能強大,學習後可以從事以下工作崗位:
1. Web開發
最火的Python web框架Django,支持非同步高並發的Tornado框架,短小精悍的flask,bottle,Django官方的標語把Django定義為the framework for perfectionist with deadlines(大意是一個為完全主義者開發的高效率web框架)
2. 網路編程
支持高並發的Twisted網路框架,py3引入的asyncio使非同步編程變的非常簡單
3. 爬蟲開發
爬蟲領域,Python幾乎是霸主地位,Scrapy/Request/BeautifuSoap/urllib等,想爬啥就爬啥
4. 雲計算開發
目前最火最知名的雲計算框架就是OpenStack,Python現在的火,很大一部分就是因為雲計算市場近幾年的爆發
5. 人工智慧
MASA和Google早期大量使用Python,為什麼Python積累了豐富的科學運算庫,當AI時代來臨後,Python從眾多編程語言中脫穎而出,各種人工智慧演算法都基於Python編寫,由其PyTorch之後,Python作為AI時代頭牌語言的位置基本確立!
6. 自動化運維
問問中國的每個運維人員,運維人員必須會的語言是什麼?10個人詳細會給你一個相同的答案,它的名字叫Python
7. 金融分析
金融公司使用的很多分析程序、高頻交易軟體就是用的Python,目前,Python是金融分析、量化交易領域里用的最多的語言
8. 科學運算
97年開始,NASA就在大量使用Python在進行各種復雜的科學運算,隨著NumPy,SciPy,Matplotlib,Enthought librarys等眾多程序庫的開發,使得Python越來越適合做科學計算、繪制高質量的2D和3D圖像。和科學計算領域最流行的商業軟體Matlab相比,Python是一門通用的程序設計語言,比Matlab所採用的腳本語言的應用范圍更廣泛
9. 游戲開發
在網路游戲開發中Python也有很多應用。相比Lua or C++,Python比Lua有更高階的抽象能力,可以用更少的代碼描述游戲業務邏輯,與Lua相比,Python更適合作為一種Host語言,即程序的入口點是在Python那一端會比較好,然後用C/C++在非常必要的時候寫一些擴展。Python非常適合編寫1萬行以上的項目,而且能夠很好的把網游項目的規模控制在10萬行代碼以內。
10. 桌面軟體
雖然大家很少使用桌面軟體了,但是Python在圖形界面開發上也很強大,你可以用tkinter/PyQT框架開發各種桌面軟體!

㈢ Python 包管理工具

  Python之所以受歡迎不光是因為它簡單易學,更重要的是它有成千上萬的寶藏庫。這些庫相當於是已經集成好的工具,只要安裝就能在Python里使用。它們可以處理各式各樣的問題,無需你再造輪子,而且隨著社區的不斷更新維護,有些庫越來越強大,幾乎能媲美企業級應用。那麼這些工具庫怎麼下載安裝呢?它們被放在一個統一的「倉庫」里,名叫PyPi(Python Package Index),所有的庫安裝都是從這里調度。有了倉庫之後,還需要有管理員,pip就是這樣一個角色。

  pip 是 Python 中的標准庫管理器,這意味著它是一個工具,用它可以來管理 Python 標准庫中其他的包,允許你安裝和管理不屬於 Python 標准庫的其它軟體包,其提供了對 Python 包的查找、下載、安裝、卸載等功能。總的來說,pip的Python第三方庫的大管家,搞懂它,會讓你省很多事。從Python 3 >= Python 3.4 、Python2 >= Python2.7.9 版本開始,pip默認包含在Python的安裝程序中,在安裝Python時將會自動被安裝,省事方便。

  Python 的安裝器中自帶了 pip,所以你可以直接使用它,除非你安裝的是更早版本的 Python。你可以通過以下命令來判斷是否已安裝:

如果你的 Python 環境沒有安裝 pip,則可以使用以下方法來手動安裝。pip 安裝文件下載: pypi.org/project/pip…

pip提供的命令不多,但是都很實用

  pip命令默認使用的是國外的pypi鏡像(pypi.python.org),安裝慢不說,有時甚至會導致出現超時等網路問題,有時候為了安裝一個包,失敗重試安裝好幾次都不一定成功。所以,使用國內的pypi鏡像,亦即 切換 pip 源 ,這樣速度上更有保證,不失為一種加速pip安裝第三方包的好方法。常用的鏡像站有阿里雲、清華大學等。其中清華大學開源軟體鏡像站是每 5 分鍾同步一次的,比較推薦使用。阿里雲鏡像站的速度也非常快,這也是我現在在使用的。

  切換切換 pip 源可以是臨時性的,也可以設置為默認。臨時性的,就是在安裝包時,通過pip命令的 -i 選項指定鏡像源即可。例如,臨時使用阿里雲鏡像站作為 pip 源,可以是這樣安裝:

  如果每次安裝時都想要通過鏡像源來安裝,上面的辦法不免有些麻煩。我們可以修改pip的配置文件,將鏡像源寫入到 pip 配置文件中。 對於linux系統 ,修改 ~/.pip/pip.conf 文件 (沒有就創建一個文件夾及文件,文件夾要加「.」,表示是隱藏文件夾):

然後在文件中保存如下內容:

   對於windows系統 ,在C:Users文件夾下的用戶目錄(例如如果當前用戶是Administrator則是C:UsersAdministrator)下創建pip文件夾,然後再在此文件夾下創建pip.ini文件,在文件中寫入一下內容:

  配置完成後再通過 pip config list 查看pip配置。

  我們經常會遇到這樣的開發需求,比如你手頭有多個開發項目,其中項目A要求用python3.7,項目B需要用python3.6,有要求項目A和項目B依賴包相互獨立,互不幹擾。為了滿足這樣的開發需求,我們需要在自己的電腦上安裝多個Python版本,並且項目之間進行環境隔離。因此,我們要想運行這些項目,在工作電腦上就要安裝不同版本的Python。 pyenv 是Python版本管理工具,通過系統修改環境變數來實現Python不同版本的切換,利用它可以在同一台電腦上安裝多個版本的Python,設置目錄級別的Python,還能創建和管理vitual python enviroments。而且所有的設置都是用戶級別的操作,不需要sudo命令。

  首先安裝pyenv,如果你是Mac電腦,那麼推薦使用Homebrew來安裝。

要想升級pyenv,則可以執行:

pyenv安裝完成後,需要將$HOME/.pyenv/bin添加到PATH變數前面,這一步非常關鍵。

也可以採用手動安裝的方式,將pyenv檢出到你想安裝的目錄。

  添加環境變數,將PYENV_ROOT 指向 pyenv 檢出的根目錄,並向 $PATH 添加 $PYENV_ROOT/bin 以提供訪問 pyenv命令的路徑。這里的 shell 配置文件(~/.bash_profile)依不同系統而需作修改,如果使用 Zsh 則需要相應的配置 ~/.zshrc
在使用 pyenv 之後使用 pip 安裝的第三方模塊會自動安裝到當前使用 python 版本下,不會和系統模塊產生沖突。使用 pip 安裝模塊之後,如果沒有生效,記得使用 pyenv rehash 來更新。

安裝完pyenv,可以安裝Python,首先查看可安裝的Python版本:pyenv install -l,接下來開始安裝Python

執行命令 pyenv versions 查看安裝結果。

可以看到,已經成功安裝了Python,安裝的位置在 /Users/dllwh/.pyenv。

可以看到,3.9.9 前面有一個星號,說明成功切換到了 3.9.9 版本,可以執行一下python來驗證。

  Pipenv 是 Python 官方推薦的包管理工具,它綜合了 virtualenv、pip 和 pyenv 三者的功能,你可以使用 pipenv 這一個工具來安裝、卸載、跟蹤和記錄依賴性,並創建、使用和組織你的虛擬環境。

如果你是Mac電腦,那麼推薦使用Homebrew來安裝和升級pipenv:

也可以通過pip來安裝和升級pipenv:

進入到項目目錄中,通過下面的指令為項目創建虛擬環境。

  上面的操作,給pipenv_demo這個項目初始化了一個 Python 3.9.9 的虛擬環境,並在項目錄下生成一個項目依賴包文件 Pipefile。如果系統中沒有 3.9.8 版本的Python,pipenv 會調用 pyenv 來安裝對應的 Python 的版本。默認地,虛擬環境會創建在 ~/.local/share/virtualenvs目錄裡面。我們也可以通過 pipenv --venv查看項目的虛擬環境目錄。可以通過 pipenv --rm 刪除虛擬環境。
如果想更改虛擬環境的目錄,可以在 .bashrc 或 .bash_profile 中,設置環境變數WORKON_HOME,指定虛擬環境的目錄所在位置,比如想將虛擬環境放到~/.venvs目錄,則可以執行下面的命令。

如果希望在項目目錄下創建虛擬環境目錄(.venv),需要在 .bashrc 或 .bash_profile 中配置環境變數PIPENV_VENV_IN_PROJECT:

  pipenv使用 Pipfile 和 Pipfile.lock 來管理依賴包,並且在使用pipenv添加或刪除包時,自動維護 Pipfile 文件,同時生成 Pipfile.lock 來鎖定安裝包的版本和依賴信息。相比pip需要手動維護requirements.txt 中的安裝包和版本,具有很大的進步。

  為項目安裝依賴包到虛擬環境中,使每個項目擁有相互獨立的依賴包,是非常不錯的Python的開發實踐。安裝依賴包到虛擬環境中的方法:

執行完上面的命令後,檢查一下是否安裝成功:

  觀察項目的根目錄下,又多了一個 Pipfile.lock 文件。這兩個文件記錄了此項目的依賴包,這兩個文件的區別是 Pipfile 中安裝的包不包含包的具體版本號,而Pipfile.lock 是包含包的具體的版本號的。如果不想產生 Pipfile.lock 文件,在安裝依賴包的時候,加上 –skip-lock 選項即可。
在使用pipenv的時候,常常會安裝過程比較慢,這個是因為pipenv創建的 Pipfile 中默認的Pypi源是python官方的 pypi.python.org/simple。我們國內…

  為了避免每次都要指定–pypi-mirror,我一般會在創建好Pipfile以後,將文件中 source 塊下的 url 欄位,設置為國內的 pypi 源,我推薦的是清華的Pypi源或者阿里源,具體設置如下:

如果是要刪除虛擬環境中的第三方包,執行:

用git管理項目時候,要把Pipfile和Pipfile.lock加入版本跟蹤。這樣clone了這個項目的同學,只需要執行:

就可以安裝所有的Pipfile中 [packages]部分列出來的包了,並且自動為項目在自己電腦上創建了虛擬環境。

上面的方法都是安裝Pipfile中列出來的第三方包的最新版本,如果是想安裝Pipfile.lock中固定版本的第三方依賴包,需要執行:

如果項目之前使用requirements.txt來管理依賴的,那麼使用pipenv安裝所有依賴可以採用類似pip的方法:

  虛擬環境創建好了之後,就可以在裡面進行開發了。如果在命令行下開發,則在項目目錄下執行 pipenv shell ,就進入到了虛擬環境中,在這個環境中,已經包含安裝過的所有依賴包了,接下來就可以利用這些依賴包進行開發工作了。如果是用Pycharm進行開發,就更簡單了,直接用Pycharm打開項目即可。可以從Pycharm中的左側導航欄裡面看到External Libraries顯示的是虛擬環境中的Python解釋器了。
在虛擬環境中執行開發好的程序,有兩種方式,一種是前面提到的先執行pipenv shell進入到虛擬環境後,再執行python程序;另一種方式,則是執行pyenv run,比如在虛擬環境中執行基於pytest框架編寫的測試用例,只需要執行下面的命令即可:


作者:獨淚了無痕
鏈接:https://juejin.cn/post/7063699409703272485

㈣ Python學習,有哪些方向可以選擇

Python的就業方向有很多,但是只有選擇適合自己的才能支撐自己走得更遠。

1、常規軟體開發

Python支持函數式編程和OOP面向對象編程,能夠承擔任何種類軟體的開發工作,因此常規的軟體開發、腳本編寫、網路編程等都屬於標配能力。

2、爬蟲

顧名思義,就是用Python收集和爬取互聯網的信息,也是很多小夥伴們學習Python的第一驅動力,總覺得Python就是天然為爬蟲而生,簡單快速,可能靠人力一周才能完成的工作,你泡著咖啡、跑10分鍾爬蟲即可,真的非常有成就感。無論營銷、運營還是產品經理,高效獲取有效數據已成為職場必備技能。

3、Python數據分析

如今公司的產品都建立在對用戶的分析之上,也就是所有的商業公司都需要這樣一個角色,學會了爬蟲,便有了數據來源,運用這些數據以及相應的爬蟲庫和excel表格,就可以進行簡單的數據分析。

4、Python Web網站工程師

Web一直都是不可忽視的存在,利用Python的框架做一些頁面精美的網站,Python有很多優秀的Web開發框架,如Flask、Django、Bootstar 等,可以幫助你快速搭建一個網站。

5、人工智慧

Python是人工智慧時代的頭牌語言,不管是機器學習(Machine Learning)還是深度學習(Deep Learning),最常用的工具和框架都需要用Python調用,Python是人工智慧工程師的必備技能之一。

6、自動化運維工程師

運維是必須而且一定要掌握Python語言,使用Python可以自動化批量管理伺服器,起到1個人頂10個人的效果。它在系統管理、文檔管理方面都有很強大的功能。

7、Python自動化測試工程師

Python語言對測試的幫助是非常大的,自動化測試中Python語言的用途很廣,Python提供了很多自動化測試的框架,如Selenium、Pytest等,避免了大量的重復工作,Python自動化測試也變得越來越流行。

8、游戲開發

游戲伺服器領域,主要負責網路游戲的伺服器功能開發、性能優化等工作。


Python沒有非常強勢的問題,但是它簡單的語言結構應用非常廣泛,無論上述你選擇哪個方向,都是不會錯的。

㈤ python能做什麼只要應用於哪些方面應該如何學習

Python是一門簡單、易學並且很有前途的編程語言,很多人都對Python感興趣,但是當學完Python基礎用法之後,又會產生迷茫,尤其是自學的人員,不知道接下來的Python學習方向,以及學完之後能幹些什麼?以下是Python十大應用領域!
1. WEB開發
Python擁有很多免費數據函數庫、免費web網頁模板系統、以及與web伺服器進行交互的庫,可以實現web開發,搭建web框架,目前比較有名氣的Python web框架為Django。從事該領域應從數據、組件、安全等多領域進行學習,從底層了解其工作原理並可駕馭任何業內主流的Web框架。
2. 網路編程
網路編程是Python學習的另一方向,網路編程在生活和開發中無處不在,哪裡有通訊就有網路,它可以稱為是一切開發的「基石」。對於所有編程開發人員必須要知其然並知其所以然,所以網路部分將從協議、封包、解包等底層進行深入剖析。
3. 爬蟲開發
在爬蟲領域,Python幾乎是霸主地位,將網路一切數據作為資源,通過自動化程序進行有針對性的數據採集以及處理。從事該領域應學習爬蟲策略、高性能非同步IO、分布式爬蟲等,並針對Scrapy框架源碼進行深入剖析,從而理解其原理並實現自定義爬蟲框架。
4. 雲計算開發
Python是從事雲計算工作需要掌握的一門編程語言,目前很火的雲計算框架OpenStack就是由Python開發的,如果想要深入學習並進行二次開發,就需要具備Python的技能。
5. 人工智慧
MASA和Google早期大量使用Python,為Python積累了豐富的科學運算庫,當AI時代來臨後,Python從眾多編程語言中脫穎而出,各種人工智慧演算法都基於Python編寫,尤其PyTorch之後,Python作為AI時代頭牌語言的位置基本確定。
6. 自動化運維
Python是一門綜合性的語言,能滿足絕大部分自動化運維需求,前端和後端都可以做,從事該領域,應從設計層面、框架選擇、靈活性、擴展性、故障處理、以及如何優化等層面進行學習。
7. 金融分析
金融分析包含金融知識和Python相關模塊的學習,學習內容囊括Numpy\Pandas\Scipy數據分析模塊等,以及常見金融分析策略如「雙均線」、「周規則交易」、「羊駝策略」、「Dual Thrust 交易策略」等。
8. 科學運算
Python是一門很適合做科學計算的編程語言,97年開始,NASA就大量使用Python進行各種復雜的科學運算,隨著NumPy、SciPy、Matplotlib、Enthought librarys等眾多程序庫的開發,使得Python越來越適合做科學計算、繪制高質量的2D和3D圖像。
9. 游戲開發
在網路游戲開發中,Python也有很多應用,相比於Lua or C++,Python比Lua有更高階的抽象能力,可以用更少的代碼描述游戲業務邏輯,Python非常適合編寫1萬行以上的項目,而且能夠很好的把網游項目的規模控制在10萬行代碼以內。
10. 桌面軟體
Python在圖形界面開發上很強大,可以用tkinter/PyQT框架開發各種桌面軟體!
以上是Python十大應用領域和就業方向,對於學習Python不知道能幹什麼,很迷茫的同學可以作為一個學習指導!

㈥ python怎麼運行py文件

1、首先在資源管理器里復制一下py文件存放的路徑,按下windows鍵+r,在運行里輸入cmd,回車打開命令行:

㈦ python語言主要是做什麼的

python是一款應用非常廣泛的腳本程序語言,谷歌公司的網頁就是用python編寫。python在生物信息、統計、網頁製作、計算等多個領域都體現出了強大的功能。python和其他腳本語言如java、R、Perl 一樣,都可以直接在命令行里運行腳本程序。使用Python編程的方法/步驟:1、首先下載安裝python,建議安裝2.7版本以上,3.0版本以下,由於3.0版本以上不向下兼容,體驗較差。2、打開文本編輯器,推薦editplus,notepad等,將文件保存成 .py格式,editplus和notepad支持識別python語法。腳本第一行一定要寫上 #!usr/bin/python表示該腳本文件是可執行python腳本如果python目錄不在usr/bin目錄下,則替換成當前python執行程序的目錄。3、編寫完腳本之後注意調試、可以直接用editplus調試。調試方法可自行網路。腳本寫完之後,打開CMD命令行,前提是python 已經被加入到環境變數中,如果沒有加入到環境變數,請網路。4、在CMD命令行中,輸入 「python」 + 「空格」,即 」python 「;將已經寫好的腳本文件拖拽到當前游標位置,然後敲回車運行即可。
更多Python相關技術文章,請訪問Python教程欄目進行學習!以上就是小編分享的關於python語言主要是做什麼的的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!

㈧ python可以用來干什麼

1、系統編程:提供API,能方便進行系統維護和管理,Linux下標志性語言之一,是很多系統管理員理想的編程工具,這也是國外為什麼使用者這么多的原因,我們國內很少使用Linux。
2、圖形處理:有PIL、Tkinter等圖形庫支持,能方便進行圖形處理。
3、數學處理:NumPy擴展提供大量與許多標准數學庫的介面。
4、文本處理:python提供的re模塊能支持正則表達式,還提供SGML,XML分析模塊,許多程序員利用python進行XML程序的開發。
5、資料庫編程:程序員可通過遵循Python DB-API規范的模塊與Microsoft SQL Server,Oracle,Sybase,DB2,MySQL、SQLite等資料庫通信。python自帶有一個Gadfly模塊,提供了一個完整的SQL環境。
6、網路編程:提供豐富的模塊支持sockets編程,能方便快速地開發分布式應用程序。
7、Web編程:應用的開發語言,支持最新的XML技術。使用python也可能製作網站哦。
8、多媒體應用:Python的PyOpenGL模塊封裝了「OpenGL應用程序編程介面」,能進行二維和三維圖像處理。PyGame模塊可用於編寫游戲軟體。
9、pymo引擎:這是一款運行於Symbian S60V3,Symbian3,S60V5, Symbian3, Android系統上的AVG游戲引擎。因其基於python2.0平台開發,並且適用於創建秋之回憶(memories off)風格的AVG游戲,故命名為PYMO。可以開發一些手機上的軟體。
10、黑客編程:python有一個hack的庫,可以大大減少編程的工作量,很多本來很復雜的工作,可以很容易實現。

㈨ 如何創建python開發環境

搭建Python語言IDE開發環境方法:
1、下載並安裝Python For Windows。打開Python官方網站(python.org),推薦下載Python 2.7.X版本。
2、安裝Python:一路默認設置Next下去,直到Finish,完成Python安裝3、推薦使用PyCharm: PyCharm是一種Python IDE,帶有一整套可以幫助用戶在使用Python語言開發時提高其效率的工具,比如調試、語法高亮、Project管理、代碼跳轉、智能提示、自動完成、單元測試、版本控制。
4、下載PyCharm集成開發軟體,官網提供了兩種版本:Professional Edition(專業版可以試用30天,學習Python30天也夠用了。,Community Edition(社區版,功能少一點但也夠用了)。
5、安裝PyCharm集成開發軟體:一路默認設置Next下去,直到Finish,完成PyCharm的安裝。
6、配置PyCharm一:風格(配色方案)的調整::【File】→【Settings】→【 Editor】→【Colors & Fonts】→Scheme選擇Dracula注意事項:每天第一次啟動有點慢,第二次就快了。主題Scheme選擇以後,需要重啟軟體才能生效高解析度下,Pycharm的字體顯得很小,可以在Colors & Fonts選項里設置。但先要復制一個Scheme才能更改字體大小

㈩ python是如何被開發的

本文出自《Python高手之路》中的Doug Hellmann訪談。

我曾經有幸和Doug Hellmann一起工作過數月。他在DreamHost是一位非常資深的軟體開發工程師,同時他也是OpenStack項目的貢獻者。他發起過關於Python的網站Python Mole of the Week(),也出版過一本很有名的Pyhton書The Python Standard Library By Example(),同時他也是Python的核心開發人員。我曾經咨詢過Doug關於標准庫以及庫的設計與應用等方面的問題。
當你從頭開發一個Python應用時,如何邁出第一步呢?它和開發一個已有的應用程序有什麼不同?
從抽象角度看步驟都差不多,但是細節上有所不同。相對於對比開發新項目和已有項目,我個人在對應用程序和庫開發的處理方式上有更多的不同。
當我要修改已有代碼時,特別是這些代碼是其他人創建的時,起初我需要研究代碼是如何工作的,我需要改進哪些代碼。我可能會添加日誌或是輸出語句,或是用pdb,利用測試數據運行應用程序,以便我理解它是如何工作的。我經常會做一些修改並測試它們,並在每次提交代碼前添加可能的自動化測試。
創建一個新應用時,我會採取相同的逐步探索方法。我先創建一些代碼,然後手動運行它們,在這個功能可以基本調通後,再編寫測試用例確保我已經覆蓋了所有的邊界情況。創建測試用例也可以讓代碼重構更容易。
這正是smiley()的情況。在開發正式應用程序前,我先嘗試用Python的trace API寫一些臨時腳本。對於smiley我最初的設想包括一個儀表盤並從另一個運行的應用程序收集數據,另一部分用來接收通過網路發送過來的數據並將其保存。在添加幾個不同的報告功能的過程中,我意識到重放已收集的數據的過程和在一開始收集數據的過程基本是一樣的。於是我重構了一些類,並針對數據收集,資料庫訪問和報告生成器創建了基類。通過讓這些類遵循同樣的API使我可以很容易地創建數據收集應用的一個版本,它可以直接將數據寫入資料庫而無需通過網路發送數據。
當設計一個應用程序時,我會考慮用戶界面是如何工作的,但對於庫,我會專注於開發人員如何使用其API。通過先寫測試代碼而不是庫代碼,可以讓思考如何通過這個新庫開發應用程序變得更容易一點兒。我通常會以測試的方式創建一系列示常式序,然後依照其工作方式去構建這個庫。
我還發現,在寫任何庫的代碼之前先寫文檔讓我可以全面考慮功能和流程的使用,而不需要提交任何實現的細節。它還讓我可以記錄對於設計我所做出的選擇,以便讀者不僅可以理解如何使用這個庫,還可以了解在創建它時我的期望是什麼。這就是我用在stevedore上的方法。
我知道我想讓stevedore能夠提供一組類用來管理應用程序的插件。在設計階段,我花了些時間思考我見過的使用插件的通用模式,並且寫了幾頁粗略的文檔描述這些類應該如何使用。我意識到,如果我在類的構造函數中放最復雜的參數,方法map()幾乎是可互換的。這些設計筆記直接寫進了stevedore官方文檔的簡介里,用來解釋在應用程序中使用插件的不同模式和准則。
將一個模塊加入Python標准庫的流程是什麼?
完整的流程和規范可以在Python Developer's Guide()中找到。
一個模塊在被加入Python標准庫之前,需要被證明是穩定且廣泛使用的。模塊需要提供的功能要麼是很難正確實現的,要麼是非常有用以至於許多開發人員已經創建了他們自己不同的變種。API應該非常清晰並且它的實現不能依賴任何標准庫之外的庫。
提議一個新模塊的第一步是在社區通過python-ideas郵件列表非正式地了解一下大家對此的感興趣程度。如果回應很積極,下一步就是創建一個Python增強提案(PythonEnhancement Proposal,PEP),它包括添加這個模塊的動因,以及如何過渡的一些實現細節。
因為包的管理和發現工作已經非常穩定了,尤其是pip和Python Package Index(PyPI),因此在標准庫之外維護一個新的庫可能更實用。單獨的發布使得對於新功能和bug修復(bugfix)的更新可以更頻繁,對於處理新技術或API的庫來說這尤其重要。
標准庫中的哪三個模塊是你最想人們深入了解並開始使用的?
最近我做了許多關於應用程序中動態載入擴展方面的工作。我使用abc模塊為那些作為抽象基類進行的擴展定義API,以幫助擴展的作者們了解API的哪些方法是必需的,哪些是可選的。抽象基類已經在其他一些語言中內置了,但我發現很多Python程序員並不知道Python也有。
bisect模塊中的二分查找演算法是個很好的例子,一個廣泛使用但不容易正確實現的功能,因此它非常適合放到標准庫中。我特別喜歡它可以搜索稀疏列表,且搜索的值可能並不在其中。
collections模塊中有許多有用的數據結構並沒有得到廣泛使用。我喜歡用namedtuple來創建一些小的像類一樣的數據結構來保存數據但並不需要任何關聯邏輯。如果之後需要添加邏輯的話,可以很容易將namedtuple轉換成一個普通的類,因為namedtuple支持通過名字訪問屬性。另一個有意思的數據結構是ChainMap,它可以生成良好的層級命名空間。ChainMap能夠用來為模板解析創建上下文或者通過清晰的流程定義來管理不同來源的配置。
許多項目(包括OpenStack)或者外部庫,會在標准庫之上封裝一層自己的抽象。例如,我特別想了解對於日期/時間的處理。對此你有什麼建議嗎?程序員應該堅持使用標准庫,還是應該寫他們自己的函數,切換到其他外部庫或是開始給Python提交補丁?
所有這些都可以。我傾向於避免重復造輪子,所以我強烈主張貢獻補丁和改進那些能夠用來作為依賴的項目。但是,有時創建另外的抽象並單獨維護代碼也是合理的,不管在應用程序內還是作為一個新的庫。
你提到的例子中,OpenStack里的timeutils模塊就是對Python的datetime模塊的一層很薄的封裝。大部分功能都簡短且簡單,但通過將這些最常見的操作封裝為一個模塊,我們可以保證它們在OpenStack項目中以一致的方式進行處理。因為許多函數都是應用相關的,某種意義上它們強化了一些問題決策,例如,字元串時間戳格式或者「現在」意味著什麼,它們不太適合作為Python標准庫的補丁或者作為一個通用庫發布以及被其他項目採用。
與之相反,我目前正致力於將OpenStack的API服務項目從早期創建時使用的WSGI框架轉成採用一個第三方Web開發框架。在Python中開發WSGI應用有很多選擇,並且當我們可能需要增強其中一個以便其可以完全適應OpenStack API伺服器的需要時,將這些可重用的修改貢獻對於維護一個「私有的」框架似乎更可取。
當從標准庫或其他地方導入並使用大量模塊時,關於該做什麼你有什麼特別的建議嗎?
我沒有什麼硬性限制,但是如果我有過多的導入時,我會重新考慮這個模塊的設計並考慮將其拆到一個包中。與上層模塊或者應用程序模塊相比,對底層模塊的這種拆分可能會發生得更快,因為對於上層模塊我期望將更多片段組織在一起。
關於Python 3,有什麼模塊是值得一提而且能令開發人員有興趣深入了解的?
支持Python 3的第三方庫的數量已經到了決定性的時刻。針對Python 3開發新庫或應用程序從未如此簡單過,而且幸虧有3.3中加入的兼容性功能使同時維護對Python 2.7的支持也很容易。主要的Linux發行版正在致力於將Python 3默認安裝。任何人要用Python創建新項目都應該認真考慮對Python 3的支持,除非有尚未移植的依賴。目前來說,不能運行在Python 3上的庫基本會被視為「不再維護」。
許多開發人員將所有的代碼都寫入到應用程序中,但有些情況下可能有必要將代碼封裝成一個庫。關於設計、規劃、遷移等,做這些最好的方式是什麼?
應用程序就是「膠水代碼」的集合用來將庫組織在一起完成特定目的。起初設計時可以將這些功能實現為一個庫,然後在構建應用程序時確保庫的代碼能夠很好地組織到邏輯單元中,這會讓測試變得更簡單。這還意味著應用程序的功能可以通過庫進行訪問,並且能夠被重新組合以構建其他應用程序。未能採用這種方法的話意味著應用程序的功能和用戶界面的綁定過於緊密,導致很難修改和重用。
對於計劃開始構建自己的Python庫的人們有什麼樣的建議呢?
我通常建議自頂向下設計庫和API,對每一層應用單一職責原則(Single Responsibility Principle,SRP)()這樣的設計准則。考慮調用者如何使用這個庫,並創建一個API去支持這些功能。考慮什麼值可以存在一個實例中被方法使用,以及每個方法每次都要傳入哪些值。最後,考慮實現以及是否底層的代碼的組織應該不同於公共API。
SQLAlchemy是應用這些原則的絕好例子。聲明式ORM、數據映射和表達式生成層都是單獨的。開發人員可以自行決定對於API訪問的正確的抽象程度,並基於他們的需求而不是被庫的設計強加的約束去使用這個庫。
當你隨機看Python程序員的代碼時遇到的最常見的編程錯誤是什麼?
Python的習慣用法和其他語言的一個較大的不同在於循環和迭代。例如,我見過的最常見的反模式是使用for循環過濾一個列表並將元素加入到一個新的列表中,然後再在第二個循環中處理這個結果(可能將列表作為參數傳給一個函數)。我通常建議將過濾循環改成生成器表達式,因為生成器表達式,更有效也更容易理解。列表的組合也很常見,以便它們的內容可以以某種方式一起被處理,但卻沒有使用itertools.chain()。
還有一些我在代碼評審時給出的更細小的建議,例如,使用dict()而不是長的if:then:else塊作為查找表,確保函數總是返回相同的類型(如一個空列表而不是None),通過使用元組和新類將相關的值合並到一個對象中從而減少函數的參數,以及在公共API中定義要使用的類而不是依賴於字典。
有沒有關於選擇了一個「錯誤」的依賴的具體的例子是你親身經歷或目睹過的?
最近,我有個例子,pyparsing()的一個新發布取消了對Python 2的支持,這給我正在維護的一個庫帶來了一點兒小麻煩。對pyparsing的更新是個重大的修改,而且是明確標識成這樣的,但是因為我沒有在對cliff()的設置中限制依賴版本號,所以pyparsing的新發布給cliff的用戶造成了問題。解決方案就是在cliff的依賴列表中對Python 2和Python 3提供不同的版本邊界。這種情況突顯了理解依賴管理和確保持續集成測試中適當的測試配置的重要性。
你怎麼看待框架?
框架像任何工具類型一樣。它們確實有幫助,但在選擇框架時要特別謹慎,應確保它能夠很好地完成當前的工作。
通過抽取公共部分到一個框架中,你可以將你的開發精力專注於應用中獨特的方面。通過提供許多類似運行在開發模式或者寫一個測試套件這樣的引導代碼,它們還可以幫你讓一個應用程序迅速達到一個可用的狀態而不是從頭開發。它們還可以激勵你在應用程序開發過程中保持一致,這意味著最終你的代碼將更易於理解且更可重用。
雖然使用框架時還有其他一些潛在的缺點需要注意。決定使用某個特定框架通常能夠反映應用程序本身的設計。如果設計的限制不能從根本上符合應用程序的需求,那麼選擇錯誤的框架會令應用的實現變得更難。如果你試著使用與框架建議不同的模式或慣用方式,你最終將不得不同框架做斗爭。

閱讀全文

與python如何開發文檔管理相關的資料

熱點內容
肉多的霸總文 瀏覽:941
可以投屏的電影網站 瀏覽:398
黃有聲故事 瀏覽:484
重生末世之塵華 瀏覽:746
優化演算法的輸入維數越不容易收斂 瀏覽:777
java極限編程pdf 瀏覽:130
塞葡萄的是哪個小說 瀏覽:821
架設傳奇命令 瀏覽:951
關於醫生的小說 瀏覽:520
愛情動作電影 瀏覽:808
八零電子書txt免費下載網站 瀏覽:509
登陸遼事通顯示伺服器連接錯誤怎麼辦 瀏覽:547
9米高隧道演算法 瀏覽:508
池袋最強作品集txt 瀏覽:784
app專題推薦在哪裡 瀏覽:279
神雲伺服器顯示燈 瀏覽:134
程序員磨合期技巧 瀏覽:849
鬼團六全部電影名稱 瀏覽:864
穿越唯一一個女人世界 瀏覽:645
飛言情小說官網入口 瀏覽:581