Python基礎知識(一) 初識Python

Python簡介python

1、Python介紹

    Python(英國發音:/ˈpaɪθən/ 美國發音:/ˈpaɪθɑːn/),是一種普遍使用的高級編程語言,屬於通用型編程語言,由吉多·範羅蘇姆創造,初版發佈於1991年。能夠視之爲一種改良(加入一些其餘編程語言的優勢,如面向對象)的 LISP。做爲一種解釋型語言,Python 的設計哲學強調代碼的可讀性和簡潔的語法(尤爲是使用空格縮進劃分代碼塊,而非使用大括號或者關鍵詞)。相比於C++或Java,Python讓開發者可以用更少的代碼表達想法。無論是小型仍是大型程序,該語言都試圖讓程序的結構清晰明瞭。linux

    與Scheme、Ruby、Perl、Tcl 等動態類型編程語言同樣,Python擁有動態類型系統和垃圾回收功能,可以自動管理內存使用,而且支持多種編程範式,包括面向對象、命令式、函數式和過程式編程。其自己擁有一個巨大而普遍的標準庫。
    Python虛擬機自己幾乎能夠在全部的操做系統中運行。Python的正式解釋器CPython是用 C語言編寫的、是一個由社區驅動的自由軟件,目前由Python軟件基金會管理。android

 

2、Python的起源

    Python的創始人爲吉多·範羅蘇姆。1989年的聖誕節期間,吉多·範羅蘇姆爲了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,做爲ABC語言的一種繼承。之因此選中Python做爲程序的名字,是由於他是BBC電視劇——蒙提·派森的飛行馬戲團的愛好者。ABC是由吉多參加設計的一種教學語言。就吉多本人看來,ABC這種語言很是優美和強大,是專門爲非專業程序員設計的。可是ABC語言並無成功,究其緣由,吉多認爲是非開放形成的。
    吉多決心在Python中避免這一錯誤,並獲取了很是好的效果,完美結合了C和其餘一些語言。
    就這樣,Python在吉多手中誕生了。實際上,第一個實現是在Mac機上。能夠說,Python是從ABC發展起來,主要受到了Modula-3(另外一種至關優美且強大的語言,爲小型團體所設計的)的影響。而且結合了Unix shell和C的習慣。
    目前吉多仍然是Python的主要開發者,決定整個Python語言的發展方向。Python社區常常稱呼他是仁慈的獨裁者。程序員

 

3、Python設計哲學與定位

    Python的設計哲學是「優雅」、「明確」、「簡單」。Python開發者的哲學是「用一種方法,最好是隻有一種方法來作一件事」,也所以它和擁有明顯我的風格的其餘語言很不同。在設計Python語言時,若是面臨多種選擇,Python開發者通常會拒絕花俏的語法,而選擇明確沒有或者不多有歧義的語法。這些準則被稱爲「Python格言」。在Python解釋器內運行import this能夠得到完整的列表:正則表達式

Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win32
    Type "copyright", "credits" or "license()" for more information.
    >>> import this
    The Zen of Python, by Tim Peters

    Beautiful is better than ugly.
    Explicit is better than implicit.
    Simple is better than complex.
    Complex is better than complicated.
    Flat is better than nested.
    Sparse is better than dense.
    Readability counts.
    Special cases aren't special enough to break the rules.
    Although practicality beats purity.
    Errors should never pass silently.
    Unless explicitly silenced.
    In the face of ambiguity, refuse the temptation to guess.
    There should be one-- and preferably only one --obvious way to do it.
    Although that way may not be obvious at first unless you're Dutch.
    Now is better than never.
    Although never is often better than *right* now.
    If the implementation is hard to explain, it's a bad idea.
    If the implementation is easy to explain, it may be a good idea.
    Namespaces are one honking great idea -- let's do more of those!

:以上內容均摘自維基百科,地址:https://zh.wikipedia.org/wiki/Python.算法

 

4、Python是什麼樣的語言?

  一、編譯和解釋

1)編譯器和解釋器

    *編譯器是把源程序的每一條語句都翻譯成機器語言,並保存成二進制文件(便可執行的目標代碼),翻譯與執行是分開的,這樣運行時計算機能夠直接以機器語言來運行此程序,速度很快;
    *而解釋器則是隻在執行程序時,才一條一條的解釋成機器語言給計算機來執行(即對源程序的翻譯與執行是一次性完成的,不生成可存儲的目標代碼),因此運行速度是不如編譯後的程序運行的快的. 這是由於計算機不能直接認識並執行咱們寫的語句,它只能認識機器語言(是二進制的形式)。shell

    *兩者背後的最大區別是:對編譯執行而言,運行時的控制權在用戶程序;對解釋執行而言,程序運行時的控制權在解釋器而不在用戶程序;數據庫

2)編譯型VS解釋型   

    編譯型
    優勢:編譯器通常會有預編譯的過程對代碼進行優化。由於編譯只作一次,運行時不須要編譯,因此編譯型語言的程序執行效率高。能夠脫離語言環境獨立運行。
    缺點:編譯以後若是須要修改就須要整個模塊從新編譯。編譯的時候根據對應的運行環境生成機器碼,不一樣的操做系統之間移植就會有問題,須要根據運行的操做系統環境編譯不一樣的可執行文件。

    解釋型
    優勢:有良好的平臺兼容性和可移植性,在任何環境中均可以運行,前提是安裝瞭解釋器(虛擬機)。靈活,修改代碼的時候直接修改就能夠,能夠快速部署,不用停機維護。
    缺點:每次運行的時候都要解釋一遍,執行效率低,佔用空間大,不只要給用戶程序分配空間,解釋器自己也佔用了寶貴的系統資源,所以性能上不如編譯型語言。編程

 

3)編譯型語言的工做模式

    一、源文件(包含全部的程序代碼)---->編譯器(編譯)---->可執行文件(直接運行)瀏覽器

    二、一個項目(包含各個源文件)---->編譯器(編譯)---->生成對應的目標文件---->連接程序(Linker)---->將目標文件「打包」成可執行文件(連接)連接程序除了連接目標文件外,可能還有各類資源,像圖標文件、聲音文件,還要負責去除目標文件之間的冗餘重複代碼,等等;

 

4)解釋型語言的工做模式

    在程序運行的前一刻,還只有源程序而沒有可執行程序;而程序每執行到源程序的某一條指令,則會有一個稱之爲解釋程序的外殼程序將源代碼轉換成二進制代碼以供執行,總言之,就是不斷地解釋、執行、解釋、執行……

 

二、動態語言和靜態語言

    1)動態類型語言:動態類型語言是指在運行期間纔去作數據類型檢查的語言,也就是說,在用動態類型的語言編程時,永遠也不用給任何變量指定數據類型,該語言會在你第一次賦值給變量時,在內部將數據類型記錄下來。Python和Ruby就是一種典型的動態類型語言,其餘的各類腳本語言如VBScript也多少屬於動態類型語言。
    2)靜態類型語言:靜態類型語言與動態類型語言恰好相反,它的數據類型是在編譯期間檢查的,也就是說在寫程序時要聲明全部變量的數據類型,C/C++是靜態類型語言的典型表明,其餘的靜態類型語言還有C#、JAVA等。

 

三、強類型定義語言和弱類型定義語言

    1)強類型定義語言:強制數據類型定義的語言。也就是說,一旦一個變量被指定了某個數據類型,若是不通過強制轉換,那麼它就永遠是這個數據類型了。舉個例子:若是你定義了一個整型變量a,那麼程序根本不可能將a看成字符串類型處理。強類型定義語言是類型安全的語言。
    2)弱類型定義語言:數據類型能夠被忽略的語言。它與強類型定義語言相反, 一個變量能夠賦不一樣數據類型的值。

    強類型定義語言在速度上可能略遜色於弱類型定義語言,可是強類型定義語言帶來的嚴謹性可以有效的避免許多錯誤。另外,「這門語言是否是動態語言」與「這門語言是否類型安全」之間是徹底沒有聯繫的!例如:Python是動態語言,是強類型定義語言(類型安全的語言); VBScript是動態語言,是弱類型定義語言(類型不安全的語言); JAVA是靜態語言,是強類型定義語言(類型安全的語言)。

 

5、Python的優缺點

    根據最新的TIOBE排行榜顯示,Python在全部編程語言的熱門程度中排行第四,是一個優秀並普遍使用的語言。

:TIOBE排行榜是根據互聯網上有經驗的程序員、課程和第三方廠商的數量,並使用搜索引擎(如Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube統計出排名數據,只是反映某個編程語言的熱門程度,並不能說明一門編程語言好很差,或者一門語言所編寫的代碼數量多少。)

 https://www.tiobe.com/tiobe-index/

   

    既然目前Python這麼火熱,那它有哪些優勢呢?

一、Python的優勢

  • 簡單:Python是一種表明簡單主義思想的語言。閱讀一個良好的Python程序就感受像是在讀英語同樣。它使你可以專一於解決問題而不是去搞明白語言自己;
  • 易學:Python極其容易上手,由於Python有極其簡單的說明文檔 ;
  • 速度快:Python 的底層是用 C 語言寫的,不少標準庫和第三方庫也都是用 C 寫的,運行速度很是快;
  • 免費、開源:Python是FLOSS(自由/開放源碼軟件)之一。使用者能夠自由地發佈這個軟件的拷貝、閱讀它的源代碼、對它作改動、把它的一部分用於新的自由軟件中。FLOSS是基於一個團體分享知識的概念;
  • 高層語言:用Python語言編寫程序的時候無需考慮諸如如何管理你的程序使用的內存一類的底層細節;
  • 可移植性:因爲它的開源本質,Python已經被移植在許多平臺上(通過改動使它可以工做在不一樣平臺上)。這些平臺包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/二、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian以及Google基於linux開發的android平臺;
  • 解釋性:一個用編譯性語言好比C或C++寫的程序能夠從源文件(即C或C++語言)轉換到一個你的計算機使用的語言(二進制代碼,即0和1)。這個過程經過編譯器和不一樣的標記、選項完成。運行程序的時候,鏈接/轉載器軟件把你的程序從硬盤複製到內存中而且運行。而Python語言寫的程序不須要編譯成二進制代碼。你能夠直接從源代碼運行 程序。在計算機內部,Python解釋器把源代碼轉換成稱爲字節碼的中間形式,而後再把它翻譯成計算機使用的機器語言並運行。這使得使用Python更加簡單。也使得Python程序更加易於移植;
  • 面向對象:Python既支持面向過程的編程也支持面向對象的編程。在「面向過程」的語言中,程序是由過程或僅僅是可重用代碼的函數構建起來的。在「面向對象」的語言中,程序是由數據和功能組合而成的對象構建起來的;
  • 可擴展性:若是須要一段關鍵代碼運行得更快或者但願某些算法不公開,能夠部分程序用C或C++編寫,而後在Python程序中使用它們;
  • 可嵌入性:能夠把Python嵌入C/C++程序,從而向程序用戶提供腳本功能;
  • 豐富的庫:Python標準庫確實很龐大。它能夠幫助處理各類工做,包括正則表達式、文檔生成、單元測試線程、數據庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統、GUI(圖形用戶界面)、Tk和其餘與系統有關的操做。這被稱做Python的「功能齊全」理念。除了標準庫之外,還有許多其餘高質量的庫,如wxPython、Twisted和Python圖像庫等等;
  • 規範的代碼:Python採用強制縮進的方式使得代碼具備較好可讀性。而Python語言寫的程序不須要編譯成二進制代碼。

 

二、Python的缺點

  • 單行語句和命令行輸出問題:不少時候不能將程序連寫成一行,如import sys;for i in sys.path:print i。而perl和awk就無此限制,能夠較爲方便的在shell下完成簡單程序,不須要如Python同樣,必須將程序寫入一個.py文件。
  • 獨特的語法:這也許不該該被稱爲侷限,可是它用縮進來區分語句關係的方式仍是給不少初學者帶來了困惑。即使是頗有經驗的Python程序員,也可能陷入陷阱當中。
  • 運行速度慢:這裏是指與C和C++相比。

   

    固然,任何一門語言都不是完美的,都有擅長和不擅長的,語言只是一個工具,是實現程序設計師思想的工具,只要咱們利用好它們,都能創造價值!

 

6、Python的解釋器及其開發環境介紹

一、Python的解釋器

    Python是一門跨平臺的腳本語言,Python規定了一個Python語法規則,實現了Python語法的解釋程序就成爲了Python的解釋器。
  • CPython(ClassicPython,也就是原始的Python實現,須要區別於其餘實現的時候才以CPython稱呼;或解做C語言實現的Python)。這是最經常使用的Python版本,CPython實現會將源文件(py文件)轉換成字節碼文件(pyc文件)而後運行在Python虛擬機上;
  • Jyphon(原名JPython;Java語言實現的Python,現已正式發佈)。Jython能夠直接調用Java的各類函數庫,它會將Python代碼動態編譯成Java字節碼,而後在JVM上運行;
  • PyPy(使用Python語言寫的Python)
  • IronPython(面向.NET和ECMA CLI的Python實現)。IronPython可以直接調用.net平臺的各類函數庫。能夠將Python程序編譯成.net程序。
  • ZhPy(周蟒)(支持使用繁/簡中文語句編寫程序的Python語言)

 

二、Python的開發環境

 

  • IDLE:Python內置IDE (隨python安裝包提供);

 

  • PyCharm :由著名的JetBrains公司開發,帶有一整套能夠幫助用戶在使用Python語言開發時提升其效率的工 具,好比調試、語法高亮、Project管理、代碼跳轉、智能提示、自動完成、單元測試、版本控制。此外,該IDE提供了一些高級功能,以用於支持Django框架下的專業Web開發;

 

  • Komodo和Komodo Edit:後者是前者的免費精簡版;

 

  • Spyder:安裝Anaconda自帶的高級IDE;

 

  • PythonWin:ActivePython或pywin32均提供該IDE,僅適用於Windows;

 

  • SPE(Stani's Python Editor):功能較多的自由軟件,基於wxPython;

 

  • Ulipad:功能較全的自由軟件,基於wxPython;做者是中國Python高手limodou;

 

  • WingIDE:多是功能最全的IDE,但不是自由軟件(教育用戶和開源用戶能夠申請免費key);

 

  • Eric:基於PyQt的自由軟件,功能強大。全名是:The Eric Python IDE;

 

  • DrPython;

 

  • PyScripter:使用Delphi開發的輕量級的開源Python IDE, 支持Python2.6和3.0;

 

  • PyPE:一個開源的跨平臺的PythonIDE;

 

  • bpython: 類Unix操做系統下使用curses庫開發的輕量級的Python解釋器。語法提示功能;

 

  • eclipse + pydev插件:方便調試程序;

 

  • emacs:自帶python支持,自動補全、refactor等功能須要插件支持;

 

  • Vim: 最新7.3版編譯時能夠加入python支持,提供python代碼自動提示支持;

 

  • Visual Studio 2003 + VisualPython:僅適用Windows,已中止維護,功能較差

 

  • SlickEdit;

 

  • Visual Studio 2010 + Python Tools for Visual Studio

 

  • TextMate

 

  • Netbeans IDE

 

  • Sublime

 

  • ipython

 

    另外,諸如Notepad++、EditPlus、UltraEdit等通用的程序員文本編輯器軟件也能對Python代碼編輯提供必定的支持,好比代碼自動着色、註釋快捷鍵等,我的比較推薦PyCharm以及Sublime,固然Python自帶的IDLE也很不錯。
相關文章
相關標籤/搜索