Python (英國發音:/ˈpaɪθən/ 美國發音:/ˈpaɪθɑːn/), 是一種面向對象的解釋型計算機程序設計語言,由荷蘭人Guido van Rossum於1989年發明,第一個公開發行版發行於1991年。html
Python是純粹的自由軟件, 源代碼和解釋器CPython遵循 GPL(GNU General Public License)協議。Python語法簡潔清晰,特點之一是強制用空白符(white space)做爲語句縮進。python
Python具備豐富和強大的庫。它常被暱稱爲膠水語言,可以把用其餘語言製做的各類模塊(尤爲是C/C++)很輕鬆地聯結在一塊兒。常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),而後對其中有特別要求的部分,用更合適的語言改寫,好比3D遊戲中的圖形渲染模塊,性能要求特別高,就能夠用C/C++重寫,然後封裝爲Python能夠調用的擴展類庫。須要注意的是在您使用擴展類庫時可能須要考慮平臺問題,某些可能不提供跨平臺的實現。linux
7月20日,IEEE發佈2017年編程語言排行榜:Python高居首位 。c++
2018年3月,該語言做者在郵件列表上宣佈 Python 2.7將於2020年1月1日終止支持。用戶若是想要在這個日期以後繼續獲得與Python 2.7有關的支持,則須要付費給商業供應商。 程序員
python的官網爲:https://www.python.org/web
自從20世紀90年代初Python語言誕生至今,它已被逐漸普遍應用於系統管理任務的處理和Web編程。正則表達式
Python的創始人爲Guido van Rossum。1989年聖誕節期間,在阿姆斯特丹,Guido爲了打發聖誕節的無趣,決心開發一個新的腳本解釋程序,做爲ABC 語言的一種繼承。之因此選中Python(大蟒蛇的意思)做爲該編程語言的名字,是由於他是一個叫Monty Python的喜劇團體的愛好者。算法
ABC是由Guido參加設計的一種教學語言。就Guido本人看來,ABC 這種語言很是優美和強大,是專門爲非專業程序員設計的。可是ABC語言並無成功,究其緣由,Guido 認爲是其非開放形成的。Guido 決心在Python 中避免這一錯誤。同時,他還想實如今ABC 中閃現過但不曾實現的東西。sql
就這樣,Python在Guido手中誕生了。能夠說,Python是從ABC發展起來,主要受到了Modula-3(另外一種至關優美且強大的語言,爲小型團體所設計的)的影響。而且結合了Unix shell和C的習慣。shell
Python 已經成爲最受歡迎的程序設計語言之一。2011年1月,它被TIOBE編程語言排行榜評爲2010年度語言。自從2004年之後,python的使用率呈線性增加 。
因爲Python語言的簡潔性、易讀性以及可擴展性,在國外用Python作科學計算的研究機構日益增多,一些知名大學已經採用Python來教授程序設計課程。例如卡耐基梅隆大學的編程基礎、麻省理工學院的計算機科學及編程導論就使用Python語言講授。衆多開源的科學計算軟件包都提供了Python的調用接口,例如著名的計算機視覺庫OpenCV、三維可視化庫VTK、醫學圖像處理庫ITK。而Python專用的科學計算擴展庫就更多了,例如以下3個十分經典的科學計算擴展庫:NumPy、SciPy和matplotlib,它們分別爲Python提供了快速數組處理、數值運算以及繪圖功能。所以Python語言及其衆多的擴展庫所構成的開發環境十分適合工程技術、科研人員處理實驗數據、製做圖表,甚至開發科學計算應用程序。
2018年3月,該語言做者在郵件列表上宣佈Python 2.7將於2020年1月1日終止支持。用戶若是想要在這個日期以後繼續獲得與Python 2.7有關的支持,則須要付費給商業供應商。
Python在設計上堅持了清晰劃一的風格,這使得Python成爲一門易讀、易維護,而且被大量用戶所歡迎的、用途普遍的語言。
設計者開發時總的指導思想是,對於一個特定的問題,只要有一種最好的方法來解決就行了。這在由Tim Peters寫的Python格言(稱爲The Zen of Python)裏面表述爲:There should be one-- and preferably only one --obvious way to do it. 這正好和Perl語言(另外一種功能相似的高級動態語言)的中心思想TMTOWTDI(There's More Than One Way To Do It)徹底相反。
Python的做者有意的設計限制性很強的語法,使得很差的編程習慣(例如if語句的下一行不向右縮進)都不能經過編譯。其中很重要的一項就是Python的縮進規則。
一個和其餘大多數語言(如C)的區別就是,一個模塊的界限,徹底是由每行的首字符在這一行的位置來決定的(而C語言是用一對花括號{}來明確的定出模塊的邊界的,與字符的位置毫無關係)。這一點曾經引發過爭議。由於自從C這類的語言誕生後,語言的語法含義與字符的排列方式分離開來,曾經被認爲是一種程序語言的進步。不過不能否認的是,經過強制程序員們縮進(包括if,for和函數定義等全部須要使用模塊的地方),Python確實使得程序更加清晰和美觀。
系統編程:提供API(Application Programming Interface應用程序編程接口),能方便進行系統維護和管理,Linux下標誌性語言之一,是不少系統管理員理想的編程工具。
圖形處理:有PIL、Tkinter等圖形庫支持,能方便進行圖形處理。
數學處理:NumPy擴展提供大量與許多標準數學庫的接口。
文本處理:python提供的re模塊能支持正則表達式,還提供SGML,XML分析模塊,許多程序員利用python進行XML程序的開發。
數據庫編程:程序員可經過遵循Python DB-API(數據庫應用程序編程接口)規範的模塊與Microsoft SQL Server,Oracle,Sybase,DB2,MySQL、SQLite等數據庫通訊。python自帶有一個Gadfly模塊,提供了一個完整的SQL環境。
網絡編程:提供豐富的模塊支持sockets編程,能方便快速地開發分布式應用程序。不少大規模軟件開發計劃例如Zope,Mnet 及BitTorrent. Google都在普遍地使用它。
Web編程:應用的開發語言,支持最新的XML技術。
多媒體應用:Python的PyOpenGL模塊封裝了「OpenGL應用程序編程接口」,能進行二維和三維圖像處理。PyGame模塊可用於編寫遊戲軟件。
pymo引擎:PYMO全稱爲python memories off,是一款運行於Symbian S60V3,Symbian3,S60V5, Symbian3, Android系統上的AVG遊戲引擎。因其基於python2.0平臺開發,而且適用於建立秋之回憶(memories off)風格的AVG遊戲,故命名爲PYMO。
黑客編程:python有一個hack的庫,內置了你熟悉的或不熟悉的函數,可是缺乏成就感。
Python是一門跨平臺的腳本語言,Python規定了一個Python語法規則,實現了Python語法的解釋程序就成爲了Python的解釋器。
CPython(ClassicPython,也就是原始的Python實現,須要區別於其餘實現的時候才以CPython稱呼;或解做C語言實現的Python)。這是最經常使用的Python版本。
Jython(原名JPython;Java語言實現的Python,現已正式發佈)。Jython能夠直接調用Java的各類函數庫。
PyPy(使用Python語言寫的Python)
IronPython(面向.NET和ECMA CLI的Python實現)。IronPython可以直接調用.net平臺的各類函數庫。能夠將Python程序編譯成.net程序。
ZhPy(周蟒)(支持使用繁/簡中文語句編寫程序的Python語言)
1989年,爲了打發聖誕節假期,Guido開始寫Python語言的編譯器。Python這個名字,來自Guido所摯愛的電視劇Monty Python’s Flying Circus。他但願這個新的叫作Python的語言,能符合他的理想:創造一種C和shell之間,功能全面,易學易用,可拓展的語言。
1991年,第一個Python編譯器誕生。它是用C語言實現的,並可以調用C語言的庫文件。從一出生,Python已經具備了:類,函數,異常處理,包含表和詞典在內的核心數據類型,以及模塊爲基礎的拓展系統。
Granddaddy of Python web frameworks, Zope 1 was released in 1999
Python 1.0 - January 1994 增長了 lambda, map, filter and reduce.
Python 2.0 - October 16, 2000,加入了內存回收機制,構成了如今Python語言框架的基礎
Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 誕生
Python 2.5 - September 19, 2006
Python 2.6 - October 1, 2008
Python 2.7 - July 3, 2010
In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible
在2010年python2,7違背了python簡潔的初衷,不少開發者在python的基礎上引用了其餘語言的特性,使得python再也不簡潔。做者爲了維持python的特性,在同一年推出了新版本的python(python3.0)。其中python2.x版本在2020年以後將再也不提供服務
Python 3.0 - December 3, 2008
Python 3.1 - June 27, 2009
Python 3.2 - February 20, 2011
Python 3.3 - September 29, 2012
Python 3.4 - March 16, 2014
Python 3.5 - September 13, 2015
Python 3.6 - December 16,2016
編程語言主要從如下幾個角度爲進行分類,編譯型和解釋型、靜態語言和動態語言、強類型定義語言和弱類型定義語言,每一個分類表明什麼意思呢
·編譯型語言最大的優點之一就是其執行速度。用C/C++編寫的程序運行速度要比用Java編寫的相同程序快30%-70%。
·編譯型程序比解釋型程序消耗的內存更少。
·不利的一面——編譯器比解釋器要難寫得多。
·編譯器在調試程序時提供不了多少幫助——有多少次在你的C語言代碼中遇到一個「空指針異常」時,須要花費好幾個小時來明確錯誤到底在代碼中的什麼位置。
·可執行的編譯型代碼要比相同的解釋型代碼大許多。例如,C/C++的.exe文件要比一樣功能的Java的.class文件大不少。
·編譯型程序是面向特定平臺的於是是平臺依賴的。
·編譯型程序不支持代碼中實現安全性——例如,一個編譯型的程序能夠訪問內存的任何區域,而且能夠對你的PC作它想作的任何事情(大部分病毒是使用編譯型語言編寫的)
因爲鬆散的安全性和平臺依賴性,編譯型語言不太適合開發因特網或者基於Web的應用。
·解釋型語言提供了極佳的調試支持。一名Java程序員只須要幾分鐘就能夠定位並修復一個「空指針異常」,由於Java運行環境不只指明瞭異常的性質,並且給出了異常發生位置具體的行號和函數調用順序(著名的堆棧跟蹤信息)。這樣的便利是編譯型語言所沒法提供的。
·另外一個優點是解釋器比編譯器容易實現
·解釋型語言最大的優點之一是其平臺獨立性
·解釋型語言也能夠保證高度的安全性——這是互聯網應用迫切須要的
中間語言代碼的大小比編譯型可執行代碼小不少
·平臺獨立性,以及嚴密的安全性是使解釋型語言成爲適合互聯網和Web應用的理想語言的2個最重要的因素。
·解釋型語言存在一些嚴重的缺點。解釋型應用佔用更多的內存和CPU資源。這是因爲,爲了運行解釋型語言編寫的程序,相關的解釋器必須首先運行。解釋器是複雜的,智能的,大量消耗資源的程序而且它們會佔用不少CPU週期和內存。
·因爲解釋型應用的decode-fetch-execute(解碼-抓取-執行)的週期,它們比編譯型程序慢不少。
·解釋器也會作不少代碼優化,運行時安全性檢查;這些額外的步驟佔用了更多的資源並進一步下降了應用的運行速度。
ps:編譯型語言在程序執行以前,有一個單獨的編譯過程,將程序翻譯成機器語言,之後執行這個程序的時候,就不用再進行翻譯了。例如c,c++
解釋型語言,是在運行的時候將程序翻譯成機器語言,因此運行速度相對於編譯型語言要慢。
Python就是解釋性語言
·Python的定位是「優雅」、「明確」、「簡單」,因此Python程序看上去老是簡單易懂,初學者學Python,不但入門容易,並且未來深刻下去,能夠編寫那些很是很是複雜的程序。
開發效率很是高,Python有很是強大的第三方庫,基本上你想經過計算機實現任何功能,Python官方庫裏都有相應的模塊進行支持,直接下載調用後,在基礎庫的基礎上再進行開發,大大下降開發週期,避免重複造輪子。
·高級語言————當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節
·可移植性————因爲它的開源本質,Python已經被移植在許多平臺上(通過改動使它可以工 做在不一樣平臺上)。若是你當心地避免使用依賴於系統的特性,那麼你的全部Python程序無需修改就幾乎能夠在市場上全部的系統平臺上運行
·可擴展性————若是你須要你的一段關鍵代碼運行得更快或者但願某些算法不公開,你能夠把你的部分程序用C或C++編寫,而後在你的Python程序中使用它們。
·可嵌入性————你能夠把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能。
·速度慢,Python 的運行速度相比C語言確實慢不少,跟JAVA相比也要慢一些,所以這也是不少所謂的大牛不屑於使用Python的主要緣由,但其實這裏所指的運行速度慢在大多數狀況下用戶是沒法直接感知到的,必須藉助測試工具才能體現出來,好比你用C運一個程序花了0.01s,用Python是0.1s,這樣C語言直接比Python快了10倍,算是很是誇張了,可是你是沒法直接經過肉眼感知的,由於一個正常人所能感知的時間最小單位是0.15-0.4s左右,哈哈。其實在大多數狀況下Python已經徹底能夠知足你對程序速度的要求,除非你要寫對速度要求極高的搜索引擎等,這種狀況下,固然仍是建議你用C去實現的。
代碼不能加密,由於PYTHON是解釋性語言,它的源碼都是以名文形式存放的,不過我不認爲這算是一個缺點,若是你的項目要求源代碼必須是加密的,那你一開始就不該該用Python來去實現。
·線程不能利用多CPU問題,這是Python被人詬病最多的一個缺點,GIL即全局解釋器鎖(Global Interpreter Lock),是計算機程序設計語言解釋器用於同步線程的工具,使得任什麼時候刻僅有一個線程在執行,Python的線程是操做系統的原生線程。在Linux上爲pthread,在Windows上爲Win thread,徹底由操做系統調度線程的執行。一個python解釋器進程內有一條主線程,以及多條用戶程序的執行線程。即便在多核CPU平臺上,因爲GIL的存在,因此禁止多線程的並行執行。關於這個問題的折衷解決方法,咱們在之後線程和進程章節裏再進行詳細探討。
·當咱們編寫Python代碼時,咱們獲得的是一個包含Python代碼的以.py爲擴展名的文本文件。要運行代碼,就須要Python解釋器去執行.py文件。
·因爲整個Python語言從規範到解釋器都是開源的,因此理論上,只要水平夠高,任何人均可以編寫Python解釋器來執行Python代碼(固然難度很大)。事實上,確實存在多種Python解釋器。
windows下安裝Python(自動添加環境變量)以3.5版本的舉例:
1,官網下載:https://www.python.org/downloads/windows/
2,選擇版本。
3,自動添加環境變量。
4,更改完成。
安裝python3
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
tar -zxvf Python-3.5.1.tgz
mv Python-3.5.1 /usr/local
ll /usr/bin | grep python
rm -rf /usr/bin/python
cd /usr/local/Python-3.5.1/
./configure && make && make install
rm -rf /usr/bin/python
ln -s /usr/local/bin/python3.5 /usr/bin/python
python –V
python開發工具安裝參考
https://blog.csdn.net/qq_29883591/article/details/52664478
>>> print("hello world")
hello world
>>> print ("hello\nworld") //換行打印家\n
hello
world
>>> print (000)
0
>>> print (100)
100
單行註釋使用#
# print ("hello world") //註釋了這一行,只打印123
print (123)
多行註釋
「」」內容」」」 或者 ‘’’內容’’’
變量:把程序運行的中間結果臨時的存在內存裏,以便後續的代碼調用
>>> a=10
>>> print (a)
10
變量名爲: a,變量a的值爲:"10"
變量的做用:暱稱,其代指內存裏某個地址中保存的內容
變量定義的規則:
·變量名只能是 字母、數字或下劃線的任意組合
·變量名的第一個字符不能是數字
·如下關鍵字不能聲明爲變量名
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
#駝峯體
AgeOfOldboy = 56
NumberOfStudents = 80
#下劃線
age_of_oldboy = 56
number_of_students = 80
·變量名爲中文、拼音
·變量名過長
·變量名詞不達意
常量:一直保持不變的量,例如生活中的π
Python中程序員約定俗成用變量名所有大寫表明常量
AGE_OF_OLDBOY =
56
# 將用戶輸入的內容賦值給 name 變量
name = input("請輸入用戶名:") //等待用戶輸入
# 打印輸入的內容
print(name)
name=input("你的名字:")
age= input("年齡:")
print (name,age)
咱們人類能夠很容易的分清數字與字符的區別,可是計算機並不能呀,計算機雖然很強大,但從某種角度上看又很傻,除非你明確的告訴它,1是數字,「漢」是文字,不然它是分不清1和‘漢’的區別的,所以,在每一個編程語言裏都會有一個叫數據類型的東東,其實就是對經常使用的各類數據類型進行了明確的劃分,你想讓計算機進行數值運算,你就傳數字給它,你想讓他處理文字,就傳字符串類型給他。Python中經常使用的數據類型有多種,數字、字符串、布爾類型等
在32位機器上,整數的位數爲32位,取值範圍爲-2**31~2**31-1,即-2147483648~2147483647
在64位系統上,整數的位數爲64位,取值範圍爲-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(長整型)
跟C語言不一樣,Python的長整數沒有指定位寬,即:Python沒有限制長整數數值的大小,但實際上因爲機器內存有限,咱們使用的長整數數值不可能無限大。
注意,自從Python2.2起,若是整數發生溢出,Python會自動將整數數據轉換爲長整數,因此現在在長整數數據後面不加字母L也不會致使嚴重後果了。
注意:在Python3裏再也不有long類型了,全都是int
type顯示數據類型
a="a"
b=1
print (type(a),type(b))
<class 'str'> <class 'int'>
賦值時加上」」便是字符串類型
a="a"
b="1" //只要加上」」即爲字符串類型
print (type(a),type(b))
<class 'str'> <class 'str'>
單雙引號沒有任何區別,在語句中防止重複因此有時候爲’’
a= '''
1
2
3
4
'''
print(a)
結果:
1
2
3
4
使用+和*字符串拼接
name="彭濟昊"
print("你的名字:"+name)、
結果:
你的名字:彭濟昊
name="彭濟昊"
print(name *2)
結果:彭濟昊彭濟昊
注意,字符串的拼接只能是雙方都是字符串,不能跟數字或其它類型拼接
布爾類型很簡單,就兩個值,一個True(真),一個False(假), 主要用記邏輯判斷
>>> a=3
>>> b=5
>>> a>b
False
>>> a<b
True
計算機能夠進行的運算有不少種,可不僅加減乘除這麼簡單,運算按種類可分爲算數運算、比較運算、邏輯運算、賦值運算、成員運算、身份運算、位運算,今天咱們暫只學習算數運算、比較運算、邏輯運算、賦值運算
算數運算
如下假設變量:a=10,b=20
比較運算
如下假設變量:a=10,b=20
賦值運算
如下假設變量:a=10,b=20
邏輯運算
針對邏輯運算的進一步研究:
1,在沒有()的狀況下not 優先級高於 and,and優先級高於or,即優先級關係爲( )>not>and>or,同一優先級從左往右計算
>>> 1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
False
>>> not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
False
ps: x or y , x爲真,值就是x,x爲假,值是y;x and y, x爲真,值是y,x爲假,值是x。
a= 1 or 2
print(a)
b = 0 or 3
print(b)
a = 1 and 2
print(a)
1
3
2
格式:
if 條件:
動做
age = int(input("age:"))
if age > 20:
print ("老年人")
#年齡大於20輸出老年人,小於20不顯示
格式:
if 條件:
動做
else:
動做
age = int(input("age:"))
if age > 20:
print ("老年人")
else:
print("還年輕")
格式
if 條件:
動做
elif:
動做
elif:
動做
age_of_oldboy = 48
guess = int(input(">>:"))
if guess > age_of_oldboy :
print("猜的太大了,往小裏試試...")
elif guess < age_of_oldboy :
print("猜的過小了,往大里試試...")
else:
print("恭喜你,猜對了...")
格式:
while 條件:
# 循環體
# 若是條件爲真,那麼循環體則執行
# 若是條件爲假,那麼循環體不執行
age = int(input("age:"))
while age > 10:
print ("123")
#輸入的數字大於10無限輸出123,小於10沒輸出結果
age = int(input("age:"))
while age > 10:
print ("老年人")
else:
print ("年輕人")
#輸入數字大於10輸出老年人,小於10輸出年輕人
break用於徹底結束一個循環,跳出循環體執行循環後面的語句
continue和break有點相似,區別在於continue只是終止本次循環,接着還執行後面的循環,break則徹底終止循環
字符編碼(英語:Character encoding)也稱字集碼,是把字符集中的字符編碼爲指定集合中某一對象(例如:比特模式、天然數序列、8位組或者電脈衝),以便文本在計算機中存儲和經過通訊網絡的傳遞。常見的例子包括將拉丁字母表編碼成摩斯電碼和ASCII。其中,ASCII將字母、數字和其它符號編號,並用7比特的二進制來表示這個整數。一般會額外使用一個擴充的比特,以便於以1個字節的方式存儲
ASCII碼是西歐編碼的方式,用一個字節表示一個字符,採起7位編碼,因此是2^7=128,共能夠表示128個字符,包括34個字符,(如換行LF,回車CR等),其他94位爲英文字母和標點符號及運算符號等。
Unicode可以表示全世界全部的字節
Unicode一般用兩個字節表示一個字符,原有的英文編碼從單字節變成雙字節,只須要把高字節所有填爲0就能夠
UTF-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字符編碼,又稱萬國碼。由Ken Thompson於1992年建立。如今已經標準化爲RFC 3629。UTF-8用1到6個字節編碼UNICODE字符。用在網頁上能夠同一頁面顯示中文簡體繁體及其它語言(如英文,日文,韓文)
GBK是隻用來編碼漢字的,GBK全稱《漢字內碼擴展規範》,使用雙字節編碼
Python (英國發音:/ˈpaɪθən/ 美國發音:/ˈpaɪθɑːn/), 是一種面向對象的解釋型計算機程序設計語言,由荷蘭人Guido van Rossum於1989年發明,第一個公開發行版發行於1991年。
Python是純粹的自由軟件, 源代碼和解釋器CPython遵循 GPL(GNU General Public License)協議。Python語法簡潔清晰,特點之一是強制用空白符(white space)做爲語句縮進。
Python具備豐富和強大的庫。它常被暱稱爲膠水語言,可以把用其餘語言製做的各類模塊(尤爲是C/C++)很輕鬆地聯結在一塊兒。常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),而後對其中有特別要求的部分,用更合適的語言改寫,好比3D遊戲中的圖形渲染模塊,性能要求特別高,就能夠用C/C++重寫,然後封裝爲Python能夠調用的擴展類庫。須要注意的是在您使用擴展類庫時可能須要考慮平臺問題,某些可能不提供跨平臺的實現。
7月20日,IEEE發佈2017年編程語言排行榜:Python高居首位 。
2018年3月,該語言做者在郵件列表上宣佈 Python 2.7將於2020年1月1日終止支持。用戶若是想要在這個日期以後繼續獲得與Python 2.7有關的支持,則須要付費給商業供應商。
python的官網爲:https://www.python.org/
自從20世紀90年代初Python語言誕生至今,它已被逐漸普遍應用於系統管理任務的處理和Web編程。
Python的創始人爲Guido van Rossum。1989年聖誕節期間,在阿姆斯特丹,Guido爲了打發聖誕節的無趣,決心開發一個新的腳本解釋程序,做爲ABC 語言的一種繼承。之因此選中Python(大蟒蛇的意思)做爲該編程語言的名字,是由於他是一個叫Monty Python的喜劇團體的愛好者。
ABC是由Guido參加設計的一種教學語言。就Guido本人看來,ABC 這種語言很是優美和強大,是專門爲非專業程序員設計的。可是ABC語言並無成功,究其緣由,Guido 認爲是其非開放形成的。Guido 決心在Python 中避免這一錯誤。同時,他還想實如今ABC 中閃現過但不曾實現的東西。
就這樣,Python在Guido手中誕生了。能夠說,Python是從ABC發展起來,主要受到了Modula-3(另外一種至關優美且強大的語言,爲小型團體所設計的)的影響。而且結合了Unix shell和C的習慣。
Python 已經成爲最受歡迎的程序設計語言之一。2011年1月,它被TIOBE編程語言排行榜評爲2010年度語言。自從2004年之後,python的使用率呈線性增加 。
因爲Python語言的簡潔性、易讀性以及可擴展性,在國外用Python作科學計算的研究機構日益增多,一些知名大學已經採用Python來教授程序設計課程。例如卡耐基梅隆大學的編程基礎、麻省理工學院的計算機科學及編程導論就使用Python語言講授。衆多開源的科學計算軟件包都提供了Python的調用接口,例如著名的計算機視覺庫OpenCV、三維可視化庫VTK、醫學圖像處理庫ITK。而Python專用的科學計算擴展庫就更多了,例如以下3個十分經典的科學計算擴展庫:NumPy、SciPy和matplotlib,它們分別爲Python提供了快速數組處理、數值運算以及繪圖功能。所以Python語言及其衆多的擴展庫所構成的開發環境十分適合工程技術、科研人員處理實驗數據、製做圖表,甚至開發科學計算應用程序。
2018年3月,該語言做者在郵件列表上宣佈Python 2.7將於2020年1月1日終止支持。用戶若是想要在這個日期以後繼續獲得與Python 2.7有關的支持,則須要付費給商業供應商。
Python在設計上堅持了清晰劃一的風格,這使得Python成爲一門易讀、易維護,而且被大量用戶所歡迎的、用途普遍的語言。
設計者開發時總的指導思想是,對於一個特定的問題,只要有一種最好的方法來解決就行了。這在由Tim Peters寫的Python格言(稱爲The Zen of Python)裏面表述爲:There should be one-- and preferably only one --obvious way to do it. 這正好和Perl語言(另外一種功能相似的高級動態語言)的中心思想TMTOWTDI(There's More Than One Way To Do It)徹底相反。
Python的做者有意的設計限制性很強的語法,使得很差的編程習慣(例如if語句的下一行不向右縮進)都不能經過編譯。其中很重要的一項就是Python的縮進規則。
一個和其餘大多數語言(如C)的區別就是,一個模塊的界限,徹底是由每行的首字符在這一行的位置來決定的(而C語言是用一對花括號{}來明確的定出模塊的邊界的,與字符的位置毫無關係)。這一點曾經引發過爭議。由於自從C這類的語言誕生後,語言的語法含義與字符的排列方式分離開來,曾經被認爲是一種程序語言的進步。不過不能否認的是,經過強制程序員們縮進(包括if,for和函數定義等全部須要使用模塊的地方),Python確實使得程序更加清晰和美觀。
系統編程:提供API(Application Programming Interface應用程序編程接口),能方便進行系統維護和管理,Linux下標誌性語言之一,是不少系統管理員理想的編程工具。
圖形處理:有PIL、Tkinter等圖形庫支持,能方便進行圖形處理。
數學處理:NumPy擴展提供大量與許多標準數學庫的接口。
文本處理:python提供的re模塊能支持正則表達式,還提供SGML,XML分析模塊,許多程序員利用python進行XML程序的開發。
數據庫編程:程序員可經過遵循Python DB-API(數據庫應用程序編程接口)規範的模塊與Microsoft SQL Server,Oracle,Sybase,DB2,MySQL、SQLite等數據庫通訊。python自帶有一個Gadfly模塊,提供了一個完整的SQL環境。
網絡編程:提供豐富的模塊支持sockets編程,能方便快速地開發分布式應用程序。不少大規模軟件開發計劃例如Zope,Mnet 及BitTorrent. Google都在普遍地使用它。
Web編程:應用的開發語言,支持最新的XML技術。
多媒體應用:Python的PyOpenGL模塊封裝了「OpenGL應用程序編程接口」,能進行二維和三維圖像處理。PyGame模塊可用於編寫遊戲軟件。
pymo引擎:PYMO全稱爲python memories off,是一款運行於Symbian S60V3,Symbian3,S60V5, Symbian3, Android系統上的AVG遊戲引擎。因其基於python2.0平臺開發,而且適用於建立秋之回憶(memories off)風格的AVG遊戲,故命名爲PYMO。
黑客編程:python有一個hack的庫,內置了你熟悉的或不熟悉的函數,可是缺乏成就感。
Python是一門跨平臺的腳本語言,Python規定了一個Python語法規則,實現了Python語法的解釋程序就成爲了Python的解釋器。
CPython(ClassicPython,也就是原始的Python實現,須要區別於其餘實現的時候才以CPython稱呼;或解做C語言實現的Python)。這是最經常使用的Python版本。
Jython(原名JPython;Java語言實現的Python,現已正式發佈)。Jython能夠直接調用Java的各類函數庫。
PyPy(使用Python語言寫的Python)
IronPython(面向.NET和ECMA CLI的Python實現)。IronPython可以直接調用.net平臺的各類函數庫。能夠將Python程序編譯成.net程序。
ZhPy(周蟒)(支持使用繁/簡中文語句編寫程序的Python語言)
1989年,爲了打發聖誕節假期,Guido開始寫Python語言的編譯器。Python這個名字,來自Guido所摯愛的電視劇Monty Python’s Flying Circus。他但願這個新的叫作Python的語言,能符合他的理想:創造一種C和shell之間,功能全面,易學易用,可拓展的語言。
1991年,第一個Python編譯器誕生。它是用C語言實現的,並可以調用C語言的庫文件。從一出生,Python已經具備了:類,函數,異常處理,包含表和詞典在內的核心數據類型,以及模塊爲基礎的拓展系統。
Granddaddy of Python web frameworks, Zope 1 was released in 1999
Python 1.0 - January 1994 增長了 lambda, map, filter and reduce.
Python 2.0 - October 16, 2000,加入了內存回收機制,構成了如今Python語言框架的基礎
Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 誕生
Python 2.5 - September 19, 2006
Python 2.6 - October 1, 2008
Python 2.7 - July 3, 2010
In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible
在2010年python2,7違背了python簡潔的初衷,不少開發者在python的基礎上引用了其餘語言的特性,使得python再也不簡潔。做者爲了維持python的特性,在同一年推出了新版本的python(python3.0)。其中python2.x版本在2020年以後將再也不提供服務
Python 3.0 - December 3, 2008
Python 3.1 - June 27, 2009
Python 3.2 - February 20, 2011
Python 3.3 - September 29, 2012
Python 3.4 - March 16, 2014
Python 3.5 - September 13, 2015
Python 3.6 - December 16,2016
編程語言主要從如下幾個角度爲進行分類,編譯型和解釋型、靜態語言和動態語言、強類型定義語言和弱類型定義語言,每一個分類表明什麼意思呢
·編譯型語言最大的優點之一就是其執行速度。用C/C++編寫的程序運行速度要比用Java編寫的相同程序快30%-70%。
·編譯型程序比解釋型程序消耗的內存更少。
·不利的一面——編譯器比解釋器要難寫得多。
·編譯器在調試程序時提供不了多少幫助——有多少次在你的C語言代碼中遇到一個「空指針異常」時,須要花費好幾個小時來明確錯誤到底在代碼中的什麼位置。
·可執行的編譯型代碼要比相同的解釋型代碼大許多。例如,C/C++的.exe文件要比一樣功能的Java的.class文件大不少。
·編譯型程序是面向特定平臺的於是是平臺依賴的。
·編譯型程序不支持代碼中實現安全性——例如,一個編譯型的程序能夠訪問內存的任何區域,而且能夠對你的PC作它想作的任何事情(大部分病毒是使用編譯型語言編寫的)
因爲鬆散的安全性和平臺依賴性,編譯型語言不太適合開發因特網或者基於Web的應用。
·解釋型語言提供了極佳的調試支持。一名Java程序員只須要幾分鐘就能夠定位並修復一個「空指針異常」,由於Java運行環境不只指明瞭異常的性質,並且給出了異常發生位置具體的行號和函數調用順序(著名的堆棧跟蹤信息)。這樣的便利是編譯型語言所沒法提供的。
·另外一個優點是解釋器比編譯器容易實現
·解釋型語言最大的優點之一是其平臺獨立性
·解釋型語言也能夠保證高度的安全性——這是互聯網應用迫切須要的
中間語言代碼的大小比編譯型可執行代碼小不少
·平臺獨立性,以及嚴密的安全性是使解釋型語言成爲適合互聯網和Web應用的理想語言的2個最重要的因素。
·解釋型語言存在一些嚴重的缺點。解釋型應用佔用更多的內存和CPU資源。這是因爲,爲了運行解釋型語言編寫的程序,相關的解釋器必須首先運行。解釋器是複雜的,智能的,大量消耗資源的程序而且它們會佔用不少CPU週期和內存。
·因爲解釋型應用的decode-fetch-execute(解碼-抓取-執行)的週期,它們比編譯型程序慢不少。
·解釋器也會作不少代碼優化,運行時安全性檢查;這些額外的步驟佔用了更多的資源並進一步下降了應用的運行速度。
ps:編譯型語言在程序執行以前,有一個單獨的編譯過程,將程序翻譯成機器語言,之後執行這個程序的時候,就不用再進行翻譯了。例如c,c++
解釋型語言,是在運行的時候將程序翻譯成機器語言,因此運行速度相對於編譯型語言要慢。
Python就是解釋性語言
·Python的定位是「優雅」、「明確」、「簡單」,因此Python程序看上去老是簡單易懂,初學者學Python,不但入門容易,並且未來深刻下去,能夠編寫那些很是很是複雜的程序。
開發效率很是高,Python有很是強大的第三方庫,基本上你想經過計算機實現任何功能,Python官方庫裏都有相應的模塊進行支持,直接下載調用後,在基礎庫的基礎上再進行開發,大大下降開發週期,避免重複造輪子。
·高級語言————當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節
·可移植性————因爲它的開源本質,Python已經被移植在許多平臺上(通過改動使它可以工 做在不一樣平臺上)。若是你當心地避免使用依賴於系統的特性,那麼你的全部Python程序無需修改就幾乎能夠在市場上全部的系統平臺上運行
·可擴展性————若是你須要你的一段關鍵代碼運行得更快或者但願某些算法不公開,你能夠把你的部分程序用C或C++編寫,而後在你的Python程序中使用它們。
·可嵌入性————你能夠把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能。
·速度慢,Python 的運行速度相比C語言確實慢不少,跟JAVA相比也要慢一些,所以這也是不少所謂的大牛不屑於使用Python的主要緣由,但其實這裏所指的運行速度慢在大多數狀況下用戶是沒法直接感知到的,必須藉助測試工具才能體現出來,好比你用C運一個程序花了0.01s,用Python是0.1s,這樣C語言直接比Python快了10倍,算是很是誇張了,可是你是沒法直接經過肉眼感知的,由於一個正常人所能感知的時間最小單位是0.15-0.4s左右,哈哈。其實在大多數狀況下Python已經徹底能夠知足你對程序速度的要求,除非你要寫對速度要求極高的搜索引擎等,這種狀況下,固然仍是建議你用C去實現的。
代碼不能加密,由於PYTHON是解釋性語言,它的源碼都是以名文形式存放的,不過我不認爲這算是一個缺點,若是你的項目要求源代碼必須是加密的,那你一開始就不該該用Python來去實現。
·線程不能利用多CPU問題,這是Python被人詬病最多的一個缺點,GIL即全局解釋器鎖(Global Interpreter Lock),是計算機程序設計語言解釋器用於同步線程的工具,使得任什麼時候刻僅有一個線程在執行,Python的線程是操做系統的原生線程。在Linux上爲pthread,在Windows上爲Win thread,徹底由操做系統調度線程的執行。一個python解釋器進程內有一條主線程,以及多條用戶程序的執行線程。即便在多核CPU平臺上,因爲GIL的存在,因此禁止多線程的並行執行。關於這個問題的折衷解決方法,咱們在之後線程和進程章節裏再進行詳細探討。
·當咱們編寫Python代碼時,咱們獲得的是一個包含Python代碼的以.py爲擴展名的文本文件。要運行代碼,就須要Python解釋器去執行.py文件。
·因爲整個Python語言從規範到解釋器都是開源的,因此理論上,只要水平夠高,任何人均可以編寫Python解釋器來執行Python代碼(固然難度很大)。事實上,確實存在多種Python解釋器。
windows下安裝Python(自動添加環境變量)以3.5版本的舉例:
1,官網下載:https://www.python.org/downloads/windows/
2,選擇版本。
3,自動添加環境變量。
4,更改完成。
安裝python3
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
tar -zxvf Python-3.5.1.tgz
mv Python-3.5.1 /usr/local
ll /usr/bin | grep python
rm -rf /usr/bin/python
cd /usr/local/Python-3.5.1/
./configure && make && make install
rm -rf /usr/bin/python
ln -s /usr/local/bin/python3.5 /usr/bin/python
python –V
python開發工具安裝參考
https://blog.csdn.net/qq_29883591/article/details/52664478
>>> print("hello world")
hello world
>>> print ("hello\nworld") //換行打印家\n
hello
world
>>> print (000)
0
>>> print (100)
100
單行註釋使用#
# print ("hello world") //註釋了這一行,只打印123
print (123)
多行註釋
「」」內容」」」 或者 ‘’’內容’’’
變量:把程序運行的中間結果臨時的存在內存裏,以便後續的代碼調用
>>> a=10
>>> print (a)
10
變量名爲: a,變量a的值爲:"10"
變量的做用:暱稱,其代指內存裏某個地址中保存的內容
變量定義的規則:
·變量名只能是 字母、數字或下劃線的任意組合
·變量名的第一個字符不能是數字
·如下關鍵字不能聲明爲變量名
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
#駝峯體
AgeOfOldboy = 56
NumberOfStudents = 80
#下劃線
age_of_oldboy = 56
number_of_students = 80
·變量名爲中文、拼音
·變量名過長
·變量名詞不達意
常量:一直保持不變的量,例如生活中的π
Python中程序員約定俗成用變量名所有大寫表明常量
AGE_OF_OLDBOY =
56
# 將用戶輸入的內容賦值給 name 變量
name = input("請輸入用戶名:") //等待用戶輸入
# 打印輸入的內容
print(name)
name=input("你的名字:")
age= input("年齡:")
print (name,age)
咱們人類能夠很容易的分清數字與字符的區別,可是計算機並不能呀,計算機雖然很強大,但從某種角度上看又很傻,除非你明確的告訴它,1是數字,「漢」是文字,不然它是分不清1和‘漢’的區別的,所以,在每一個編程語言裏都會有一個叫數據類型的東東,其實就是對經常使用的各類數據類型進行了明確的劃分,你想讓計算機進行數值運算,你就傳數字給它,你想讓他處理文字,就傳字符串類型給他。Python中經常使用的數據類型有多種,數字、字符串、布爾類型等
在32位機器上,整數的位數爲32位,取值範圍爲-2**31~2**31-1,即-2147483648~2147483647
在64位系統上,整數的位數爲64位,取值範圍爲-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(長整型)
跟C語言不一樣,Python的長整數沒有指定位寬,即:Python沒有限制長整數數值的大小,但實際上因爲機器內存有限,咱們使用的長整數數值不可能無限大。
注意,自從Python2.2起,若是整數發生溢出,Python會自動將整數數據轉換爲長整數,因此現在在長整數數據後面不加字母L也不會致使嚴重後果了。
注意:在Python3裏再也不有long類型了,全都是int
type顯示數據類型
a="a"
b=1
print (type(a),type(b))
<class 'str'> <class 'int'>
賦值時加上」」便是字符串類型
a="a"
b="1" //只要加上」」即爲字符串類型
print (type(a),type(b))
<class 'str'> <class 'str'>
單雙引號沒有任何區別,在語句中防止重複因此有時候爲’’
a= '''
1
2
3
4
'''
print(a)
結果:
1
2
3
4
使用+和*字符串拼接
name="彭濟昊"
print("你的名字:"+name)、
結果:
你的名字:彭濟昊
name="彭濟昊"
print(name *2)
結果:彭濟昊彭濟昊
注意,字符串的拼接只能是雙方都是字符串,不能跟數字或其它類型拼接
布爾類型很簡單,就兩個值,一個True(真),一個False(假), 主要用記邏輯判斷
>>> a=3
>>> b=5
>>> a>b
False
>>> a<b
True
計算機能夠進行的運算有不少種,可不僅加減乘除這麼簡單,運算按種類可分爲算數運算、比較運算、邏輯運算、賦值運算、成員運算、身份運算、位運算,今天咱們暫只學習算數運算、比較運算、邏輯運算、賦值運算
算數運算
如下假設變量:a=10,b=20
比較運算
如下假設變量:a=10,b=20
賦值運算
如下假設變量:a=10,b=20
邏輯運算
針對邏輯運算的進一步研究:
1,在沒有()的狀況下not 優先級高於 and,and優先級高於or,即優先級關係爲( )>not>and>or,同一優先級從左往右計算
>>> 1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
False
>>> not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
False
ps: x or y , x爲真,值就是x,x爲假,值是y;x and y, x爲真,值是y,x爲假,值是x。
a= 1 or 2
print(a)
b = 0 or 3
print(b)
a = 1 and 2
print(a)
1
3
2
格式:
if 條件:
動做
age = int(input("age:"))
if age > 20:
print ("老年人")
#年齡大於20輸出老年人,小於20不顯示
格式:
if 條件:
動做
else:
動做
age = int(input("age:"))
if age > 20:
print ("老年人")
else:
print("還年輕")
格式
if 條件:
動做
elif:
動做
elif:
動做
age_of_oldboy = 48
guess = int(input(">>:"))
if guess > age_of_oldboy :
print("猜的太大了,往小裏試試...")
elif guess < age_of_oldboy :
print("猜的過小了,往大里試試...")
else:
print("恭喜你,猜對了...")
格式:
while 條件:
# 循環體
# 若是條件爲真,那麼循環體則執行
# 若是條件爲假,那麼循環體不執行
age = int(input("age:"))
while age > 10:
print ("123")
#輸入的數字大於10無限輸出123,小於10沒輸出結果
age = int(input("age:"))
while age > 10:
print ("老年人")
else:
print ("年輕人")
#輸入數字大於10輸出老年人,小於10輸出年輕人
break用於徹底結束一個循環,跳出循環體執行循環後面的語句
continue和break有點相似,區別在於continue只是終止本次循環,接着還執行後面的循環,break則徹底終止循環
字符編碼(英語:Character encoding)也稱字集碼,是把字符集中的字符編碼爲指定集合中某一對象(例如:比特模式、天然數序列、8位組或者電脈衝),以便文本在計算機中存儲和經過通訊網絡的傳遞。常見的例子包括將拉丁字母表編碼成摩斯電碼和ASCII。其中,ASCII將字母、數字和其它符號編號,並用7比特的二進制來表示這個整數。一般會額外使用一個擴充的比特,以便於以1個字節的方式存儲
ASCII碼是西歐編碼的方式,用一個字節表示一個字符,採起7位編碼,因此是2^7=128,共能夠表示128個字符,包括34個字符,(如換行LF,回車CR等),其他94位爲英文字母和標點符號及運算符號等。
Unicode可以表示全世界全部的字節
Unicode一般用兩個字節表示一個字符,原有的英文編碼從單字節變成雙字節,只須要把高字節所有填爲0就能夠
UTF-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字符編碼,又稱萬國碼。由Ken Thompson於1992年建立。如今已經標準化爲RFC 3629。UTF-8用1到6個字節編碼UNICODE字符。用在網頁上能夠同一頁面顯示中文簡體繁體及其它語言(如英文,日文,韓文)
GBK是隻用來編碼漢字的,GBK全稱《漢字內碼擴展規範》,使用雙字節編碼