1. 程式人生 > >Python基礎知識(一) 初識Python

Python基礎知識(一) 初識Python

快捷 err ogl 熱門 HR 會有 社區 小型 palm

Python簡介

一、Python介紹

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

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

二、Python的起源

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

三、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 arent 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 youre Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, its a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- lets do more of those!

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

四、Python是什麽樣的語言?

1、編譯和解釋

1)編譯器和解釋器

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

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

2)編譯型VS解釋型

編譯型
優點:編譯器一般會有預編譯的過程對代碼進行優化。因為編譯只做一次,運行時不需要編譯,所以編譯型語言的程序執行效率高。可以脫離語言環境獨立運行。
缺點:編譯之後如果需要修改就需要整個模塊重新編譯。編譯的時候根據對應的運行環境生成機器碼,不同的操作系統之間移植就會有問題,需要根據運行的操作系統環境編譯不同的可執行文件。

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

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

1、源文件(包含所有的程序代碼)---->編譯器(編譯)---->可執行文件(直接運行)

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

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

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

2、動態語言和靜態語言

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

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

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

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

五、Python的優缺點

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

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

技術分享圖片

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

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

1、Python的優點

  • 簡單:Python是一種代表簡單主義思想的語言。閱讀一個良好的Python程序就感覺像是在讀英語一樣。它使你能夠專註於解決問題而不是去搞明白語言本身;
  • 易學:Python極其容易上手,因為Python有極其簡單的說明文檔
  • 速度快:Python 的底層是用 C 語言寫的,很多標準庫和第三方庫也都是用 C 寫的,運行速度非常快;
  • 免費、開源:Python是FLOSS(自由/開放源碼軟件)之一。使用者可以自由地發布這個軟件的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用於新的自由軟件中。FLOSS是基於一個團體分享知識的概念;
  • 高層語言:用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、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語言寫的程序不需要編譯成二進制代碼。

2、Python的缺點

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

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

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

1、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語言)

2、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也很不錯。

Python基礎知識(一) 初識Python