Python基礎學習(一)之Python的概述與環境安裝

Python介紹

Python語言介紹

Python是一門高級的、面向對象的、解釋性、腳本語言。javascript

高級語言:貼近開發者,對應底層語言,底層語言貼近機器;java、C#、php 、rubyphp

面向對象對應於面向過程,是開發人員在開發過程中的思路,是程序員的世界觀java

解釋性對應於編譯性語言。python

解釋性語言:編譯型語言在程序執行以前,有一個單獨的編譯過程,將程序翻譯成機器語言就不用再進行翻譯了。linux

編譯性語言:
編譯型語言在程序執行以前,有一個單獨的編譯過程,將程序翻譯成機器語言,之後執行這個程序的時候,就不用再進行翻譯了。c++

腳本語言是一種解釋性的語言,例如vbscript,javascript,installshield script,ActionScript等等,它不象c\c++等能夠編譯成二進制代碼,以可執行文件的形式存在.
腳本語言不須要編譯,能夠直接用,由解釋器來負責解釋。 腳本語言通常都是以文本形式存在,相似於一種命令.程序員

起源web

Python的做者,Guido von Rossum(吉多·範羅蘇姆),荷蘭人。1982年,Guido從阿姆斯特丹大學得到了數學和計算機碩士學位。然而,儘管他算得上是一位數學家,但他更加享受計算機帶來的樂趣。用他的話說,儘管擁有數學和計算機雙料資質,他總趨向於作計算機相關的工做,並熱衷於作任何和編程相關的活兒。在那個時候,Guido接觸並使用過諸如Pascal [ˈpæskəl]、C、Fortran[ˈfɔ:træn] 等語言。這些語言的基本設計原則是讓機器能更快運行。在80年代,雖然IBM和蘋果已經掀起了我的電腦浪潮,但這些我的電腦的配置很低。好比早期的Macintosh(麥金塔電腦),只有8MHz的CPU主頻和128KB的RAM,一個大的數組就能佔滿內存。全部的編譯器的核心是作優化,以便讓程序可以運行。爲了增進效率,語言也迫使程序員像計算機同樣思考,以便能寫出更符合機器口味的程序。在那個時代,程序員巴不得用手榨取計算機每一寸的能力。有人甚至認爲C語言的指針是在浪費內存。至於動態類型,內存自動管理,面向對象…… 別想了,那會讓你的電腦陷入癱瘓。正則表達式

這種編程方式讓Guido感到苦惱。Guido知道如何用C語言寫出一個功能,但整個編寫過程須要耗費大量的時間,即便他已經準確的知道了如何實現。他的另外一個選擇是shell。Bourne Shell(是一個交換式的命令解釋器和命令編程語言)做爲UNIX系統的解釋器已經長期存在。UNIX的管理員們經常用shell去寫一些簡單的腳本,以進行一些系統維護的工做,好比按期備份、文件系統管理等等。shell能夠像膠水同樣,將UNIX下的許多功能鏈接在一塊兒。許多C語言下上百行的程序,在shell下只用幾行就能夠完成。然而,shell的本質是調用命令。它並非一個真正的語言。好比說,shell沒有數值型的數據類型,加法運算都很複雜。總之,shell不能全面的調動計算機的功能。算法

HOW TO用於定義一個函數。一個Python程序員應該很容易理解這段程序。ABC語言使用冒號和縮進來表示程序塊。行尾沒有分號。for和if結構中也沒有括號() 。賦值採用的是PUT,而不是更常見的等號。這些改動讓ABC程序讀起來像一段文字。 儘管已經具有了良好的可讀性和易用性,ABC語言最終沒有流行起來。在當時,ABC語言編譯器須要比較高配置的電腦才能運行。而這些電腦的使用者一般精通計算機,他們更多考慮程序的效率,而非它的學習難度。除了硬件上的困難外,ABC語言的設計也存在一些致命的問題: 可拓展性差。ABC語言不是模塊化語言。若是想在ABC語言中增長功能,好比對圖形化的支持,就必須改動不少地方。 不能直接進行IO。ABC語言不能直接操做文件系統。儘管你能夠經過諸如文本流的方式導入數據,但ABC沒法直接讀寫文件。輸入輸出的困難對於計算機語言來講是致命的。你能想像一個打不開車門的跑車麼? 過分革新。ABC用天然語言的方式來表達程序的意義,好比上面程序中的HOW TO 。然而對於程序員來講,他們更習慣 用function或者define來定義一個函數。一樣,程序員更習慣用等號來分配變量。儘管ABC語言很特別,但學習難度 也很大。 傳播困難。ABC編譯器很大,必須被保存在磁帶上。當時Guido在訪問的時候,就必須有一個大磁帶來給別人安裝ABC編譯器。 這樣,ABC語言就很難快速傳播。 1989年,爲了打發聖誕節假期,Guido開始寫Python語言的編譯器。Python這個名字,來自Guido所摯愛的電視劇Monty Python's Flying Circus(飛行馬戲團)。他但願這個新的叫作Python的語言,能符合他的理想:創造一種C和shell之間,功能全面,易學易用,可拓展的語言。Guido做爲一個語言設計愛好者,已經有過設計語言的嘗試。這一次,也不過是一次純粹的hacking(搬運)行爲。

一門語言的誕生

1991年,第一個Python編譯器誕生。它是用C語言實現的,並可以調用C語言的庫文件。從一出生,Python已經具備了 :類,函數,異常處理,包含表和詞典在內的核心數據類型,以及模塊爲基礎的拓展系統。 Python語法不少來自C,但又受到ABC語言的強烈影響。來自ABC語言的一些規定直到今天還富有爭議,好比強制縮進。 但這些語法規定讓Python容易讀。另外一方面,Python聰明的選擇服從一些慣例,特別是C語言的慣例,好比迴歸等號賦值。Guido認爲,若是「常識」上確立的東西,沒有必要過分糾結。 Python從一開始就特別在乎可拓展性。Python能夠在多個層次上拓展。從高層上,你能夠直接引入. py文件。在底層,你能夠引用C語言的庫。Python程序員能夠快速的使用Python寫. py文件做爲拓展模塊。但當性能是考慮的重要因素時,Python程序員能夠深刻底層,寫C程序,編譯爲.so文件引入到Python中使用。Python就好像是使用鋼構建房同樣,先規定好大的框架。而程序員能夠在此框架下至關自由的拓展或更改。 最初的Python徹底由Guido本人開發。Python獲得Guido同事的歡迎。他們迅速的反饋使用意見,並參與到Python的改進。Guido和一些同事構成Python的核心團隊。他們將本身大部分的業餘時間用於hack(熟練地編輯) Python。隨後,Python拓 展到研究所以外。Python將許多機器層面上的細節隱藏,交給編譯器處理,並凸顯出邏輯層面的編程思考。Python程序員能夠花更多的時間用於思考程序的邏輯,而不是具體的實現細節。這一特徵吸引了廣大的程序員。Python開始流行。

 

人生苦短,我用python

時勢造英雄,咱們不得不暫停咱們的Python時間,轉而看一看瞬息萬變的計算機行業。1990年代初,我的計算機開始進入普通家庭。

啓示錄

Python崇尚優美、清晰、簡單,是一個優秀並普遍使用的語言。Python在TIOBE排行榜中排行第四,它是Google的第三大開發語言,Dropbox的基礎語言,豆瓣的服務器語言。Python的發展史能夠做爲一個表明,帶給我許多啓示。 在Python的開發過程當中,社區起到了重要的做用。Guido自認爲本身不是全能型的程序員,因此他只負責制訂框架。若是問題太複雜,他會選擇繞過去,也就是cut the corner(走捷徑)。這些問題最終由社區中的其餘人解決。社區中的人才是異常豐富的,就連建立網站,籌集基金這樣與開發稍遠的事情,也有人樂意於處理。現在的項目開發愈來愈複雜,愈來愈龐大,合做以及開放的心態成爲項目最終成功的關鍵。 Python從其餘語言中學到了不少,不管是已經進入歷史的ABC,仍是依然在使用的C和Perl,以及許多沒有列出的其餘 語言。能夠說,Python的成功表明了它全部借鑑的語言的成功。一樣,Ruby借鑑了Python,它的成功也表明了Python某些方面的成功。每一個語言都是混合體,都有它優秀的地方,但也有各類各樣的缺陷。同時,一個語言「好與很差」的評 判,每每受制於平臺、硬件、時代等等外部緣由。程序員經歷過許多語言之爭。其實,以開放的心態來接受各個語言,說不定哪一天,程序員也能夠如Guido那樣,混合出本身的語言。

關鍵點常識

Python/ˈpaɪθən/ 的發音與拼寫

Python的意思是蟒蛇,源於做者喜歡的一部電視劇

Python的做者是Guido van Rossum(吉多·範羅蘇姆)

Python是龜叔在1989年聖誕節期間,爲了打發無聊的聖誕節而用C編寫的一個編程語言

Python正式誕生於1991年

Python的解釋器現在有多個語言實現,咱們經常使用的是CPython(官方版本的C語言實現),其餘還有Jython(能夠運行在Java平臺)、IronPython(能夠運行在.NET和Mono平臺)、PyPy(Python實現的,支持JIT即時編譯)

Python目前有兩個版本,Python2和Python3,最新版分別爲2.7.12和3.5.2,現階段大部分公司用的是Python2

Life is shot, you need Python. 人生苦短,我用Python。

TIOBE 2018發佈了 8 月份的編程語言排行榜,前四名依然不變,分別是 Java、C、C++ 與 Python,其中值得關注的是 Python 以 6.992% 的佔比逼近 7.471% 的 C++,另外 C 指數繼續保持增加。

Python優缺點

優勢

簡單————Python是一種表明簡單主義思想的語言。閱讀一個良好的Python程序就感受像是在       讀英語同樣,Python的這種僞代碼本質是它最大的優勢之一。它使你可以專一於解決問題而不是去搞明白語言自己。

易學————就如同你即將看到的同樣,Python極其容易上手。前面已經提到了,Python有極其簡單的語法。

免費、開源————Python是FLOSS(自由/開放源碼軟件)之一。簡單地說,你能夠自由地發佈這個軟件的拷貝、閱讀它的源代碼、對它作改動、把它的一部分用於新的自由軟件中。FLOSS是基於一個團體分享知識的概念。這是爲何Python如此優秀的緣由之一——它是由一羣但願看到一個更加優秀的Python的人創造並常常改進着的。

高層語言————當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節。

可移植性————因爲它的開源本質,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程序更加易於移植。

 

面向對象————Python既支持面向過程的編程也支持面向對象的編程。在「面向過程」的語言中,程序是由過程或僅僅是可重用代碼的函數構建起來的。在「面向對象」的語言中,程序是由數據和功能組合而成的對象構建起來的。與其餘主要的語言如C++和Java相比,Python以一種很是強大又簡單的方式實現面向對象編程。

 

可擴展性————若是你須要你的一段關鍵代碼運行得更快或者但願某些算法不公開,你能夠把你的部分程序用C或C++編寫,而後在你的Python程序中使用它們。

豐富的庫————Python標準庫確實很龐大。它能夠幫助你處理各類工做,包括正則表達式、文檔生成、單元測試、線程、數據庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統、GUI(圖形用戶界面)、Tk和其餘與系統有關的操做。記住,只要安裝了Python,全部這些功能都是可用的。這被稱做Python的「功能齊全」理念。除了標準庫之外,還有許多其餘高質量的庫,如wxPython、Twisted(是用Python實現的基於事件驅動的網絡引擎框架)和Python圖像庫等等。規範的代碼————Python採用強制縮進的方式使得代碼具備極佳的可讀性。

缺點

運行速度,有速度要求的話,用C++改寫關鍵部分吧。

國內市場較小(國內以python來作主要開發的,目前只有一些web2.0公司)。但時間推移,目前不少國內軟件公司,尤爲是遊戲公司,也開始規模使用他。

中文資料匱乏(好的python中文資料屈指可數)。託社區的福,有幾本優秀的教材已經被翻譯了,但入門級教材多,高級內容仍是隻能看英語版。構架選擇太多(沒有像C#這樣的官方.net構架,也沒有像ruby因爲歷史較短,構架開發的相對集中。Ruby on Rails 構架開發中小型web程序天下無敵)。不過這也從另外一個側面說明,python比較優秀,吸引的人才多,項目也多。

Python應用場景

Web應用開發

Python常常被用於Web開發。好比,經過mod_wsgi模塊,Apache能夠運行用Python編寫的Web程序。Python定義了WSGI(是Python應用程序或框架和Web服務器之間的一種接口)標準應用接口來協調Http服務器與基於Python的Web程序之間的通訊。一些Web框架,如Django,TurboGears,web2py,Zope等,可讓程序員輕鬆地開發和管理複雜的Web程序。

操做系統管理、服務器運維的自動化腳本

在不少操做系統裏,Python是標準的系統組件。 大多數Linux發行版以及NetBSD、OpenBSD和Mac OS X都集成了Python,能夠在終端下直接運行Python。有一些Linux發行版的安裝器使用Python語言編寫,好比Ubuntu的Ubiquity安裝器,Red Hat Linux和Fedora的Anaconda安裝器。Gentoo Linux使用Python來編寫它的Portage包管理系統。Python標準庫包含了多個調用操做系統功能的庫。經過pywin32這個第三方軟件 包,Python可以訪問Windows的COM服務及其它Windows API。使用IronPython,Python程序可以直接調用.Net Framework。通常說來,Python編寫的系統管理腳本在可讀性、性能、代碼重用度、擴展性幾方面都優於普通的shell腳本。

科學計算

NumPy,SciPy,Matplotlib可讓Python程序員編寫科學計算程序。

桌面軟件

PyQt、PySide、wxPython、PyGTK是Python快速開發桌面應用程序的利器。

服務器軟件(網絡軟件)

Python對於各類網絡協議的支持很完善,所以常常被用於編寫服務器軟件、網絡爬蟲。第三方庫Twisted[ˈtwɪstɪd] 支持異步網絡編程和多數標準的網絡協議(包含客戶端和服務器),而且提供了多種工具,被普遍用於編寫高性能的服務器軟件。

遊戲

不少遊戲使用C++編寫圖形顯示等高性能模塊,而使用Python或者Lua編寫遊戲的邏輯、服務器。相較於Python,Lua的功能更簡單、體積更小;而Python則支持更多的特性和數據類型。

構思實現,產品早期原型和迭代

YouTube、Google、Yahoo!、NASA都在內部大量地使用Python。

上課主要以Python3爲主

國內是python2和python3並存,官方如今極力推薦使用Python3

Python2與Python3的比較

Python2與Python3的比較:

 print語句

python2中print是一個語句,不論想輸出什麼,直接放到print關鍵字後面便可。python3裏,print()是一個函數,像其餘函數同樣,print()須要你將要輸出的東西做爲參數傳給它。

python2

python3

備註

print

print()

輸出一個空白行,python3須要調用不帶參數的print()

print 1

print(1)

輸出一個值,將值傳入print()函數

print 1, 2

print(1,2)

輸出使用空格分割的兩個值,使用兩個參數調用print()

<>比較運算符

Python2支持<>做爲!=的同義詞, python3只支持!=, 再也不支持<>

UNICODE字符串

python2中有兩種字符串類型:Unicode字符串和非Unicode字符串。Python3中只有一種類型:Unicode字符串。

long 長整型

Python 2有爲非浮點數準備的int和long類型。int類型的最大值不能超過sys.maxint,並且這個最大值是平臺相關的。能夠經過在數字的末尾附上一個L來定義長整型,顯然,它比int類型表示的數字範圍更大。在Python 3裏,只有一種整數類型int,大多數狀況下,它很像Python 2裏的長整型。因爲已經不存在兩種類型的整數,因此就沒有必要使用特殊的語法去區別他們。

Python3的安裝

python3安裝j教程:https://blog.csdn.net/ITLearnHall/article/details/81532150

python安裝目錄介紹

安裝目錄介紹:

目錄組織方式

關於如何組織一個較好的Python工程目錄結構,已經有一些獲得了共識的目錄結構。

假設你的項目名爲foo, 我比較建議的最方便快捷目錄結構這樣就足夠了:

Foo/

|-- bin/

|   |-- foo

|

|-- foo/

|   |-- tests/

|   |   |-- __init__.py

|   |   |-- test_main.py

|   |

|   |-- __init__.py

|   |-- main.py

|

|-- docs/

|   |-- conf.py

|   |-- abc.rst

|

|-- setup.py

|-- requirements.txt

|-- README

簡要解釋一下:

bin/: 存放項目的一些可執行文件,固然你能夠起名script/之類的也行。

foo/: 存放項目的全部源代碼。(1) 源代碼中的全部模塊、包都應該放在此目錄。不要置於頂層 目錄。(2) 其子目錄tests/存放單元測試代碼; (3) 程序的入口最好命名爲main.py。

docs/: 存放一些文檔。

setup.py: 安裝、部署、打包的腳本。

requirements.txt: 存放軟件依賴的外部Python包列表。

README: 項目說明文件。

Tools目錄:Python 提供的一些工具
wiki/ 若是有wiki,能夠建立此目錄

scripts/ 項目用到的各類腳本
tests/ 測試代碼

lib/   庫文件,放自定義模塊和包

etc 是Linux下的配置文件的老家, 不少管理和使用的修改都在這裏

Share 是Python共享目錄

Include是Python包含、共享目錄

Tcl 桌面編程包

python目錄 lib 和libs有什麼區別

二者仍是有區別的,放在lib中的是被reference(引用)的,放在libs中的是被include的。放在libs中的文件會自動被Eclipse(下載)所include(包含)。因此不要把API(應用程序接)放到libs裏去。好比ndk生成的so,是在libs中的,這時候你就須要把它拷貝到lib中,而不是libs中,不然你ref

python環境變量配置

配置環境變量:https://blog.csdn.net/ITLearnHall/article/details/81318939

Python腳本結構

Python腳本結構

.py 文件

以 .py 做擴展名的文件是 Python 源代碼文件,由 python.exe 解釋,可在控制檯下運行。固然,也可用文本編輯器進行修改。

.pyc 文件

以 .pyc 做擴展名的文件是 python 編譯文件。.pyc 文件是不能用文本編輯器進行編輯的,其優勢是 .pyc 文件的執行速度要遠快於 .py 文件。至於爲何要有 .pyc 文件,這個需求太明顯了,由於 .py 文件是可直接看到源碼的,如果軟件開發商的話,不可能把源碼泄漏出去?因此,就需編譯成 .pyc 後再發布。

.pyw 文件

.pyc 文件執行時,桌面會出現相似 CMD 命令的黑色 shell 窗口,十分難看,因而 .pyw 文件就應運而生了。.pyw 文件與 .pyc 文件的執行,本質上並沒什麼區別,只是 .pyw 文件執行的時候不會出現相似 CMD 命令的黑色 shell 窗口。.pyw 文件格式主要是設計用來運行純 GUI 圖形用戶界面程序的。 純 GUI 圖形用戶界面程序的用戶不須要看到相似 CMD 命令的黑色 shell 控制檯窗口。.pyw 文件運行時,全部 stdout、stderr 輸出無效,全部原 stdin 的讀取只會獲得 EOF。
值得一提的是,開發純 GUI 圖形用戶界面程序時,可暫時把 .pyw 改爲 .py,以便運行時調出控制檯窗口,看到全部錯誤信息,方便修改、調試。

.pyo 文件

.pyo 文件是優化編譯後的程序。 「python -O 源文件」 便可將源程序編譯爲 .pyo 文件。一樣,.pyo 文件也是不能用文本編輯器進行編輯的。

.pyd 文件

.pyd 文件並非用 python 編寫成的,.pyd 文件通常是其餘語言編寫的 python 擴展模塊。.pyd 文件是用 D 語言按照必定格式編寫,並處理成二進制的文件。

窗用 python.exe 運行 .py ,用 pythonw.exe 運行 .pyw 。

這純粹是由於安裝視窗版 Python 時,擴展名 .py 自動被登記爲用 python.exe 運行的文件,

而 .pyw 則被登記爲用 pythonw.exe 運行。

.py 和 .pyw 之間的「其它差異」全都是 python.exe 和 pythonw.exe 之間的差異。

跟 python.exe 比較起來,pythonw.exe 有如下的不一樣:

1)執行時不會彈出控制檯窗口(也叫 DOS 窗口)

2)全部向原有的 stdout 和 stderr 的輸出都無效

3)全部從原有的 stdin 的讀取都只會獲得 EOF

.pyw 格式是被設計來運行開發完成的純圖形界面程序的。

純圖形界面程序的用戶不須要看到控制檯窗口。

Python腳本運行

安裝完成,打開命令窗口:輸入python3

打印Python的第一個程序hello world (在 Windows命令提示符(cmd)中輸入如下命令進行 pip的更新:python -m pip install -U pip)

相關文章
相關標籤/搜索