bazel編譯tensorfolw
① 學python可以做什麼
1WEB開發
在國內,豆瓣一開始就使用Python作為web開發基礎語言,知乎的整個架構也是基於Python語言,這使得web開發這塊在國內發展的很不錯。
盡管目前Python並不是做Web開發的首選,但一直都佔有不可忽視的一席。Python中有各類Web框架,無論是簡單而可以自由搭配的微框架還是全功能的大型MVC框架都一應俱全,這在需要敏捷開發的Web項目中也是十分具有優勢的。廣泛使用(或曾經廣泛使用)Python提供的大型Web服務包括知乎、豆瓣、Dropbox等網站。加之Python本身的「膠水」特性,很容易實現在需要大規模性能級計算時整合其它語言,同時保留Web開發時的輕便快捷。
除此之外,Python中還有大量「開箱即用」的模塊,用於與各種其它網站的對接等相關功能。如果希望開發個微信公眾號相關功能,wechat-sdk/weixin-python等包,能夠使你幾乎完全不用管文檔中提及的各種伺服器交互細節,專注於功能實現即能完成開發。
目前,國內的Python web開發主要有兩個技術棧:
(1)Django
Django是一個高級的敏捷web開發框架,如果學會了,擼一個網站很快。當然如果純粹比擼網站的速度,基於ruby的Ruby on rails顯然更快,但是Django有一個優勢就是性能優秀,更適合國內網站的應用場景。國外的著名圖片社區Pinterest早期也是基於Django開發的,承受了用戶快速增長的沖擊。所以說如果你想快速開發一個網站,還能兼顧APP客戶端的API調用需求,Django是可以信賴的。
(2)Flask
相對於Django,Flask則是一個輕量級的web框架,Flask的最大的優勢是性能優越,適合配合手機客戶端開發後台API服務。國內基於Flask的Restful API服務這快很火,也是需求最大的。知名的比如網路、網易、小米、陌陌等等很多公司都有基於Flask的應用部署。當然,如果你想做一個傳統的web網站,還是建議使用Django,Flask的優勢是後端、API,不適合構建全功能網站。
2網路爬蟲
網路爬蟲是Python比較常用的一個場景,國際上,google在早期大量地使用Python語言作為網路爬蟲的基礎,帶動了整個Python語言的應用發展。以前國內很多人用採集器搜刮網上的內容,現在用Python收集網上的信息比以前容易很多了。
Python在這個方面有許多工具上的積累,無論是用於模擬HTTP請求的Requests、用於HTML DOM解析的PyQuery/BeautifulSoup、用於自動化分布式爬取任務的Scrapy,還是用於最簡化資料庫訪問的各種ORM,都使得Python成為數據爬取的首選語言之一。特別是,爬取後的數據分析與計算是Python最為擅長的領域,非常容易整合。目前Python比較流行的網路爬蟲框架是功能非常強大的scrapy。
3人工智慧與機器學習
人工智慧是現在非常火的一個方向,AI熱潮讓Python語言的未來充滿了無限的潛力。現在釋放出來的幾個非常有影響力的AI框架,大多是Python的實現,為什麼呢?
因為Python足夠動態、具有足夠性能,這是AI技術所需要的技術特點。比如基於Python的深度學習庫、深度學習方向、機器學習方向、自然語言處理方向的一些網站基本都是通過Python來實現的。機器學習,尤其是現在火爆的深度學習,其工具框架大都提供了Python介面。Python在科學計算領域一直有著較好的聲譽,其簡潔清晰的語法以及豐富的計算工具,深受此領域開發者喜愛。
6桌面程序
Python也可以用於桌面軟體開發(如sublime text等),甚至移動端開發(參看kivy)。Python簡潔方便,各種工具包齊全的環境,能大幅度減少開發者的負擔。著名的UI框架QT有Python語言的實現版本PyQT。Python簡單易用的特性加上QT的優雅,可以很輕松的開發界面復雜的桌面程序,並且能輕松實現跨平台特性。
7多媒體應用
可以用Python裡面的PIL、Piddle、ReportLab 等模塊對圖象、聲音、視頻、動畫等進行處理,還可以用Python生成動態圖表和統計分析圖表。另外,還可以利用PyOpenGl模塊非常快速有效的編寫出三維場景。
② Python能用來做什麼
Python 語言主要有以下用途:
1) 簡單:Python 是一種代表簡單主義思想的語言。閱讀一個良好的 Python 程序就感覺像是在讀英語一樣,盡管這個英語的要求非常嚴格。Python 的這種偽代碼本質是其優點之一,使用戶能夠專注於解決問題而不是去搞明白語言本身。
2) 易學:Python 有極其簡單的語法,非常容易上手。
3) 免費、開源:Python 是 FLOSS(自由/開源軟體)之一。簡單來說,用戶可以自由地發布這個軟體的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用於新的自由軟體中。FLOSS 是基於一個團體分享知識的概念,這也是為什麼 Python 如此優秀的原因之一:它由一群希望看到 Python 更加優秀的人創造,並被他們不斷改進。
4) 高層語言:使用 Python 語言編寫程序時,不用考慮如何管理程序使用的內存等底層細節。
5) 可移植性強:由於它的開源本質,Python 已經被移植在許多平台上。如果 Python 程序沒有使用依賴於系統的特性,那麼程序不用修改就可以在下述任意平台上面運行。這些平台包括 Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、Pocket PC 和 Symbian。
6) 解釋型語言:編譯型語言(如 C 或 C++)源程序從源文件(即 C 或 C++ 語言)轉換到二進制代碼(即 0 和 1)的過程通過編譯器和不同的標記、選項完成,當運行程序的時候,連接器把程序從硬碟復制到內存中並且運行。而 Python 程序不需要編譯成二進制代碼,直接從源代碼運行程序。
在計算機內部,Python 解釋器把源代碼轉換成位元組碼的中間形式,然後再把它翻譯成計算機使用的機器語言並運行。因此,用戶不再需要操心如何編譯程序、如何確保指定了正確的模塊或包文件等細節,所有這一切使得使用 Python 更加簡單。同時,由於只需要把 Python 程序拷貝到另外一台計算機上即可工作,這也使得 Python 程序更加易於移植。
7) 面向對象:Python 既支持面向過程的編程也支持面向對象的編程。在面向過程的語言中,程序是由過程或僅僅是可重用代碼的函數構建起來的。在面向對象的語言中,程序是由數據和功能組合而成的對象構建起來的。與其他語言(如 C++ 和 Java)相比,Python 以一種非常強大又簡單的方式實現面向對象編程。
8) 可擴展性強:如果希望把一段關鍵代碼運行得更快或希望某些演算法不公開,可以使用 C 或 C++ 語言編寫這部分程序,然後在 Python 程序中調用它們。
9) 可嵌入性強:可以把 Python 嵌入 C/C++ 程序,從而向用戶提供腳本功能。
10) 豐富的擴展庫:Python 擴展庫很龐大,可以幫助處理包括正則表達式、文檔生成、單元測試、線程、資料庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV 文件、密碼系統、GUI(圖形用戶界面)、Tk 以及其他與系統有關的操作。只要安裝了 Python,所有這些功能都是可用的,這被稱作 Python 的「功能齊全」理念。除了擴展庫以外,還有許多其他高質量的庫,如 wxPython、Twisted 和 Python 圖像庫等。