[學習筆記]000_Python學習開始

1.爲何選擇Pythonlinux

    Python是一種面向對象的解釋型計算機程序設計語言,由荷蘭人Guido van Rossum1989年發明,第一個公開發行版發行於1991年。程序員

    Python是純粹的自由軟件,源代碼和解釋器CPython遵循 GPL(GNU General Public License)協議。Python語法簡潔清晰,特點之一是強制用空白符(white space)做爲語句縮進。正則表達式

    Python具備豐富和強大的庫。它常被暱稱爲膠水語言,可以把用其餘語言製做的各類模塊(尤爲是C/C++)很輕鬆地聯結在一塊兒。常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),而後對其中有特別要求的部分,用更合適的語言改寫,好比3D遊戲中的圖形渲染模塊,性能要求特別高,就能夠用C/C++重寫,然後封裝爲Python能夠調用的擴展類庫。須要注意的是在您使用擴展類庫時可能須要考慮平臺問題,某些可能不提供跨平臺的實現。shell

    Python能夠跨平臺運行:在linux下編寫的程序能夠在Macos以及windows上運行。編程

    720日,IEEE發佈2017年編程語言排行榜:Python高居首位。windows

 

2.發展歷程數組

    自從20世紀90年代初Python語言誕生至今,它已被逐漸普遍應用於系統管理任務的處理和Web編程。bash

    Python的創始人爲Guido van Rossum1989年聖誕節期間,在阿姆斯特丹,Guido爲了打發聖誕節的無趣,決心開發一個新的腳本解釋程序,作爲ABC 語言的一種繼承。之因此選中Python(大蟒蛇的意思)做爲該編程語言的名字,是由於他是一個叫Monty Python的喜劇團體的愛好者。網絡

    ABC是由Guido參加設計的一種教學語言。就Guido本人看來,ABC 這種語言很是優美和強大,是專門爲非專業程序員設計的。可是ABC語言並無成功,究其緣由,Guido 認爲是其非開放形成的。Guido 決心在Python 中避免這一錯誤。同時,他還想實如今ABC 中閃現過但不曾實現的東西。運維

 就這樣,PythonGuido手中誕生了。能夠說,Python是從ABC發展起來,主要受到了Modula-3(另外一種至關優美且強大的語言,爲小型團體所設計的)的影響。而且結合了Unix shellC的習慣。

    因爲Python語言的簡潔性、易讀性以及可擴展性,在國外用Python作科學計算的研究機構日益增多,一些知名大學已經採用Python來教授程序設計課程。例如卡耐基梅隆大學的編程基礎、麻省理工學院的計算機科學及編程導論就使用Python語言講授。衆多開源的科學計算軟件包都提供了Python的調用接口,例如著名的計算機視覺庫OpenCV、三維可視化庫VTK、醫學圖像處理庫ITK。而Python專用的科學計算擴展庫就更多了,例如以下3個十分經典的科學計算擴展庫:NumPySciPymatplotlib,它們分別爲Python提供了快速數組處理、數值運算以及繪圖功能。所以Python語言及其衆多的擴展庫所構成的開發環境十分適合工程技術、科研人員處理實驗數據、製做圖表,甚至開發科學計算應用程序。

    提及科學計算,首先會被提到的多是MATLAB。然而除了MATLAB的一些專業性很強的工具箱還沒法替代以外,MATLAB的大部分經常使用功能均可以在Python世界中找到相應的擴展庫。和MATLAB相比,用Python作科學計算有以下優勢:

  首先,MATLAB是一款商用軟件,而且價格不菲。而Python徹底免費,衆多開源的科學計算庫都提供了Python的調用接口。用戶能夠在任何計算機上免費安裝Python及其絕大多數擴展庫。

  其次,與MATLAB相比,Python是一門更易學、更嚴謹的程序設計語言。它能讓用戶編寫出更易讀、易維護的代碼。

  最後,MATLAB主要專一於工程和科學計算。然而即便在計算領域,也常常會遇到文件管理、界面設計、網絡通訊等各類需求。而Python有着豐富的擴展庫,能夠輕易完成各類高級任務,開發者能夠用Python實現完整應用程序所需的各類功能。

 

3.設計定位

    Python的設計哲學是「優雅」、「明確」、「簡單」。所以,Perl語言中「老是有多種方法來作同一件事」的理念在Python開發者中一般是難以忍受的。Python開發者的哲學是「用一種方法,最好是隻有一種方法來作一件事」。在設計Python語言時,若是面臨多種選擇,Python開發者通常會拒絕花俏的語法,而選擇明確的沒有或者不多有歧義的語法。因爲這種設計觀念的差別,Python源代碼一般被認爲比Perl具有更好的可讀性,而且可以支撐大規模的軟件開發。這些準則被稱爲Python格言。在Python解釋器內運行import this能夠得到完整的列表。

    Python開發人員儘可能避開不成熟或者不重要的優化。一些針對非重要部位的加快運行速度的補丁一般不會被合併到Python內。因此不少人認爲Python很慢。不過,根據二八定律,大多數程序對速度要求不高。在某些對運行速度要求很高的狀況,Python設計師傾向於使用JIT技術,或者用使用C/C++語言改寫這部分程序。可用的JIT技術是PyPy

    Python是徹底面向對象的語言。函數、模塊、數字、字符串都是對象。而且徹底支持繼承、重載、派生、多繼承,有益於加強源代碼的複用性。Python支持重載運算符和動態類型。相對於Lisp這種傳統的函數式編程語言,Python對函數式設計只提供了有限的支持。有兩個標準庫(functools, itertools)提供了HaskellStandard ML中久經考驗的函數式程序設計工具。

    Python自己被設計爲可擴充的。並不是全部的特性和功能都集成到語言核心。Python提供了豐富的API和工具,以便程序員可以輕鬆地使用C語言、C++Cython來編寫擴充模塊。Python編譯器自己也能夠被集成到其它須要腳本語言的程序內。所以,不少人還把Python做爲一種「膠水語言」(glue language)使用。使用Python將其餘語言編寫的程序進行集成和封裝。在Google內部的不少項目,例如Google Engine使用C++編寫性能要求極高的部分,而後用PythonJava/Go調用相應的模塊。《Python技術手冊》的做者馬特利(Alex Martelli)說:「這很難講,不過,2004 年,Python 已在Google 內部使用,Google 召募許多 Python 高手,但在這以前就已決定使用Python,他們的目的是 Python where we can, C++ where we must,在操控硬件的場合使用 C++,在快速開發時候使用 Python。」

 

4.執行

    Python在執行時,首先會將.py文件中的源代碼編譯成Pythonbyte code(字節碼),而後再由Python Virtual MachinePython虛擬機)來執行這些編譯好的byte code。這種機制的基本思想跟Java.NET是一致的。然而,Python Virtual MachineJava.NETVirtual Machine不一樣的是,PythonVirtual Machine是一種更高級的Virtual Machine。這裏的高級並非一般意義上的高級,不是說PythonVirtual MachineJava.NET的功能更強大,而是說和Java .NET相比,PythonVirtual Machine距離真實機器的距離更遠。或者能夠這麼說,PythonVirtual Machine是一種抽象層次更高的Virtual Machine

    基於CPython編譯出的字節碼文件,一般是.pyc格式。

    除此以外,Python還能夠以交互模式運行,好比主流操做系統Unix/LinuxMacWindows均可以直接在命令模式下直接運行Python交互環境。直接下達操做指令便可實現交互操做。

 

5.PK其餘語言

    5.1 C/C++/Java相比 — Python能讓你用少的多的多的代碼寫出相同的程序。有人計算過,Python寫出的程序的代碼行數只至關於相對應的Java代碼的行數的五分之一。若是沒有絕對的必要,爲何要花這麼多時間寫出這麼多的代碼呢?並且,有人說,一個優秀的程序員能維護的代碼量最可能是2萬行。這不區分用的語言到底是彙編,C仍是Python/Ruby/PHP/Lisp。因此,若是你用Python寫,你一我的乾的,無論是幹什麼,若是換用Java/C/C++,那都須要一個5人的小團隊來幹。

    5.2 VB/PHP比較 — 跟PHP/VB相比,Python的是一種從設計上講比它們好的不知多少倍的語言。PHPVB分別是在開發網站和桌面應用程序上很是流行的語言。它們流行的緣由是很是的易學。不懂計算機的人也很容易的上手。若是你用這些語言開發過大型的項目,你就會發現這些語言的設計是如此的糟糕。是朋友,他就不會勸你使用PHP/VB

    5.3 Lisp/Scala/Haskell/Closure/Erlang相比 — Python跟它們比起來顯得至關的「主流」。確實,這些語言每種都有其很酷的特徵,對於高級編程人員,瞭解這些語言能給他們對編程的思考帶來實際的提高。但這些應該在你之後的職業生涯中才去決定學哪一兩種。對於如今,Python是在語言功能和實際運用之間平衡後的更好的選擇。

    5.4 Perl相比 — Python受恩於Perl,在Python異軍突起前,Perl是最好、最大的一種動態語言。但如今,Perl已經是明日黃花,愈來愈多的人轉向Python。我感受Perl的面向對象機制有點作做,很很差用。一般認爲,Perl一種比較難學的語言,由於它提供你了太多不一樣的方法去完成同一個任務,它的語法有點像密碼,很是不直觀,除非你對它掌握的很是好。總之,我感受Perl是一種對於學生來講不是很合適的語言,除非你有特殊的理由去學它(例如,你有不少正則表達式要處理,這是Perl的閃光點)

    5.5 sh/sed/awk/bash相比 — 若是你使用Linux/Unix,你可能須要作一些shell編程,甚至會編寫一些不小的程序。可是,對於這些語言,一旦程序達到必定的行數,事情就會開始變得讓你痛苦不堪,你最好是用Python去作這些事情。固然,作這種事情,Perl是最好的選擇,Python排第二。

    你能夠在Google上搜一下「爲何XY好」 — 其中把X換成Python,把Y換成另一種語言 — 你就會發現,有無數的文章來講明它們爲何這麼好。

 

6.Python的應用範圍:

    首先,操做系統linuxMacOS自帶Python的運行環境。

    Web應用開發,3D遊戲開發,圖形界面開發,企業應用開發,系統網絡運維,網絡編程,科學與數字計算,雲計算,計算機仿真

 

7.學習Python須要具有什麼東西

    計算機的一些基本知識

    一顆渴望學習和嘗試新事物的心

 

8.學習的捷徑

    驗證例子,課後實踐,擅用搜索,放輕鬆

相關文章
相關標籤/搜索