溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python~~簡介介紹

發(fā)布時(shí)間:2020-08-11 15:46:12 來源:ITPUB博客 閱讀:145 作者:橙色的雨 欄目:數(shù)據(jù)庫

Python (英國發(fā)音:/paθn/ 美國發(fā)音:/paθɑn/), 是一種面向?qū)ο蟮慕忉屝陀?jì)算機(jī)程序設(shè)計(jì)語言,由荷蘭人Guido van Rossum于1989年發(fā)明,第一個(gè)公開發(fā)行版發(fā)行于1991年。

Python是純粹的自由軟件, 源代碼和解釋器CPython遵循 GPL(GNU General Public License)協(xié)議 。

Python語法簡潔清晰,特色之一是強(qiáng)制用空白符(white space)作為語句縮進(jìn)。

Python具有豐富和強(qiáng)大的庫。它常被昵稱為膠水語言,能夠把用其他語言制作的各種模塊(尤其是C/C++)很輕松地聯(lián)結(jié)在一起。常見的一種應(yīng)用情形是,使用Python快速生成程序的原型(有時(shí)甚至是程序的最終界面),然后對其中 有特別要求的部分,用更合適的語言改寫,比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而后封裝為Python可以調(diào)用的擴(kuò)展類庫。需要注意的是在您使用擴(kuò)展類庫時(shí)可能需要考慮平臺問題,某些可能不提供跨平臺的實(shí)現(xiàn)。

風(fēng)格

Python在設(shè)計(jì)上堅(jiān)持了清晰劃一的風(fēng)格,這使得Python成為一門易讀、易維護(hù),并且被大量用戶所歡迎的、用途廣泛的語言。

設(shè)計(jì)者開發(fā)時(shí)總的指導(dǎo)思想是,對于一個(gè)特定的問題,只要有一種最好的方法來解決就好了。這在由Tim Peters寫的Python格言(稱為The Zen of Python)里面表述為:There should be one-- and preferably only one --obvious way to do it. 這正好和Perl語言(另一種功能類似的高級動態(tài)語言)的中心思想TMTOWTDI(There's More Than One Way To Do It)完全相反。

Python的作者有意的設(shè)計(jì)限制性很強(qiáng)的語法,使得不好的編程習(xí)慣(例如if語句的下一行不向右縮進(jìn))都不能通過編譯。其中很重要的一項(xiàng)就是Python的縮進(jìn)規(guī)則。

一個(gè)和其他大多數(shù)語言(如C)的區(qū)別就是,一個(gè)模塊的界限,完全是由每行的首字符在這一行的位置來決定的(而C語言是用一對花括號{}來明確的定出模塊的邊界的,與字符的位置毫無關(guān)系)。這一點(diǎn)曾經(jīng)引起過爭議。因?yàn)樽詮腃這類的語言誕生后,語言的語法含義與字符的排列方式分離開來,曾經(jīng)被認(rèn)為是一種程序語言的進(jìn)步。不過不可否認(rèn)的是,通過強(qiáng)制程序員們縮進(jìn)(包括if,for和函數(shù)定義等所有需要使用模塊的地方),Python確實(shí)使得程序更加清晰和美觀。

設(shè)計(jì)定位

Python的設(shè)計(jì)哲學(xué)是“優(yōu)雅”、“明確”、“簡單”。因此,Perl語言中“總是有多種方法來做同一件事”的理念在Python開發(fā)者中通常是難以忍受的。Python開發(fā)者的哲學(xué)是“用一種方法,最好是只有一種方法來做一件事”。在設(shè)計(jì)Python語言時(shí),如果面臨多種選擇,Python開發(fā)者一般會拒絕花俏的語法,而選擇明確的沒有或者很少有歧義的語法。由于這種設(shè)計(jì)觀念的差異,Python源代碼通常被認(rèn)為比Perl具備更好的可讀性,并且能夠支撐大規(guī)模的軟件開發(fā)。這些準(zhǔn)則被稱為Python格言。在Python解釋器內(nèi)運(yùn)行import this可以獲得完整的列表。

Python開發(fā)人員盡量避開不成熟或者不重要的優(yōu)化。一些針對非重要部位的加快運(yùn)行速度的補(bǔ)丁通常不會被合并到Python內(nèi)。所以很多人認(rèn)為Python很慢。不過,根據(jù)二八定律,大多數(shù)程序?qū)λ俣纫蟛桓?。在某些對運(yùn)行速度要求很高的情況,Python設(shè)計(jì)師傾向于使用JIT技術(shù),或者用使用C/C++語言改寫這部分程序。可用的JIT技術(shù)是PyPy。

Python是完全面向?qū)ο蟮恼Z言。函數(shù)、模塊、數(shù)字、字符串都是對象。并且完全支持繼承、重載、派生、多繼承,有益于增強(qiáng)源代碼的復(fù)用性。Python支持重載運(yùn)算符和動態(tài)類型。相對于Lisp這種傳統(tǒng)的函數(shù)式編程語言,Python對函數(shù)式設(shè)計(jì)只提供了有限的支持。有兩個(gè)標(biāo)準(zhǔn)庫(functools, itertools)提供了Haskell和Standard ML中久經(jīng)考驗(yàn)的函數(shù)式程序設(shè)計(jì)工具。

雖然Python可能被粗略地分類為“腳本語言”(script language),但實(shí)際上一些大規(guī)模軟件開發(fā)計(jì)劃例如Zope、Mnet及BitTorrent,Google也廣泛地使用它。Python的支持者較喜歡稱它為一種高級動態(tài)編程語言,原因是“腳本語言”泛指僅作簡單程序設(shè)計(jì)任務(wù)的語言,如shellscript、VBScript等只能處理簡單任務(wù)的編程語言,并不能與Python相提并論。

Python本身被設(shè)計(jì)為可擴(kuò)充的。并非所有的特性和功能都集成到語言核心。Python提供了豐富的API和工具,以便程序員能夠輕松地使用C語言、C++、Cython來編寫擴(kuò)充模塊。Python編譯器本身也可以被集成到其它需要腳本語言的程序內(nèi)。因此,很多人還把Python作為一種“膠水語言”(glue language)使用。使用Python將其他語言編寫的程序進(jìn)行集成和封裝。在Google內(nèi)部的很多項(xiàng)目,例如Google Engine使用C++編寫性能要求極高的部分,然后用Python或Java/Go調(diào)用相應(yīng)的模塊?!禤ython技術(shù)手冊》的作者馬特利(Alex Martelli)說:“這很難講,不過,2004 年,Python 已在Google 內(nèi)部使用,Google 召募許多 Python 高手,但在這之前就已決定使用Python,他們的目的是 Python where we can, C++ where we must,在操控硬件的場合使用 C++,在快速開發(fā)時(shí)候使用 Python?!?

基本語法

Python的設(shè)計(jì)目標(biāo)之一是讓代碼具備高度的可閱讀性。它設(shè)計(jì)時(shí)盡量使用其它語言經(jīng)常使用的標(biāo)點(diǎn)符號和英文單字,讓代碼看起來整潔美觀。它不像其他的靜態(tài)語言如C、Pascal那樣需要重復(fù)書寫聲明語句,也不像它們的語法那樣經(jīng)常有特殊情況和意外。


縮進(jìn)

Python開發(fā)者有意讓違反了縮進(jìn)規(guī)則的程序不能通過編譯,以此來強(qiáng)制程序員養(yǎng)成良好的編程習(xí)慣。并且Python語言利用縮進(jìn)表示語句塊的開始和退出(Off-side規(guī)則),而非使用花括號或者某種關(guān)鍵字。增加縮進(jìn)表示語句塊的開始,而減少縮進(jìn)則表示語句塊的退出??s進(jìn)成為了語法的一部分。例如if語句:

1
2
3
4
if age<21:
    print("你不能買酒。")
    print("不過你能買口香糖。")
print("這句話處於if語句塊的外面。")

注:上述例子為python 3.0版本的代碼

根據(jù)PEP的規(guī)定,必須使用4個(gè)空格來表示每級縮進(jìn)(不清楚4個(gè)空格的規(guī)定如何,在實(shí)際編寫中可以自定義空格數(shù),但是要滿足每級縮進(jìn)間空格數(shù)相等)。使用Tab字符和其它數(shù)目的空格雖然都可以編譯通過,但不符合編碼規(guī)范。支持Tab字符和其它數(shù)目的空格僅僅是為兼容很舊的的Python程序和某些有問題的編輯程序。


控制語句

if語句,當(dāng)條件成立時(shí)運(yùn)行語句塊。經(jīng)常與else, elif(相當(dāng)于else if) 配合使用。

for語句,遍歷列表、字符串、字典、集合等迭代器,依次處理迭代器中的每個(gè)元素。

while語句,當(dāng)條件為真時(shí),循環(huán)運(yùn)行語句塊。

try語句。與except,finally配合使用處理在程序運(yùn)行中出現(xiàn)的異常情況。

class語句。用于定義類型。

def語句。用于定義函數(shù)和類型的方法。

pass語句。表示此行為空,不運(yùn)行任何操作。

assert語句。用于程序調(diào)試階段時(shí)測試運(yùn)行條件是否滿足。

with語句。Python2.6以后定義的語法,在一個(gè)場景中運(yùn)行語句塊。比如,運(yùn)行語句塊前加密,然后在語句塊運(yùn)行退出后解密。

yield語句。在迭代器函數(shù)內(nèi)使用,用于返回一個(gè)元素。自從Python 2.5版本以后。這個(gè)語句變成一個(gè)運(yùn)算符。

raise語句。制造一個(gè)錯(cuò)誤。

import語句。導(dǎo)入一個(gè)模塊或包。

from import語句。從包導(dǎo)入模塊或從模塊導(dǎo)入某個(gè)對象。

import as語句。將導(dǎo)入的對象賦值給一個(gè)變量。

in語句。判斷一個(gè)對象是否在一個(gè)字符串/列表/元組里。


表達(dá)式

Python的表達(dá)式寫法與C/C++類似。只是在某些寫法有所差別。

主要的算術(shù)運(yùn)算符與C/C++類似。+, -, *, /, //, **, ~, %分別表示加法或者取正、減法或者取負(fù)、乘法、除法、整除、乘方、取補(bǔ)、取余。>>, <<表示右移和左移。&, |, ^表示二進(jìn)制的AND, OR, XOR運(yùn)算。>, <, ==, !=, <=, >=用于比較兩個(gè)表達(dá)式的值,分別表示大于、小于、等于、不等于、小于等于、大于等于。在這些運(yùn)算符里面,~, |, ^, &, <<, >>必須應(yīng)用于整數(shù)。

Python使用and, or, not表示邏輯運(yùn)算。

is, is not用于比較兩個(gè)變量是否是同一個(gè)對象。in, not in用于判斷一個(gè)對象是否屬于另外一個(gè)對象。

Python支持“列表推導(dǎo)式”(list comprehension),比如計(jì)算0-9的平方和:

>>> sum(x * x for x in range(10))

285

Python使用lambda表示匿名函數(shù)。匿名函數(shù)體只能是表達(dá)式。比如:

>>> add=lambda x, y : x + y

>>> add(3,2)

5

Python使用y if cond else x表示條件表達(dá)式。意思是當(dāng)cond為真時(shí),表達(dá)式的值為y,否則表達(dá)式的值為x。相當(dāng)于C++和Java里的cond?y:x。

Python區(qū)分列表(list)和元組(tuple)兩種類型。list的寫法是[1,2,3],而tuple的寫法是(1,2,3)??梢愿淖僱ist中的元素,而不能改變tuple。在某些情況下,tuple的括號可以省略。tuple對于賦值語句有特殊的處理。因此,可以同時(shí)賦值給多個(gè)變量,比如:

>>> x, y=1,2#同時(shí)給x,y賦值,最終結(jié)果:x=1, y=2

特別地,可以使用以下這種形式來交換兩個(gè)變量的值:

>>> x, y=y, x #最終結(jié)果:y=1, x=2

Python使用'(單引號)和"(雙引號)來表示字符串。與Perl、Unix Shell語言或者Ruby、Groovy等語言不一樣,兩種符號作用相同。一般地,如果字符串中出現(xiàn)了雙引號,就使用單引號來表示字符串;反之則使用雙引號。如果都沒有出現(xiàn),就依個(gè)人喜好選擇。出現(xiàn)在字符串中的\(反斜杠)被解釋為特殊字符,比如\n表示換行符。表達(dá)式前加r指示Python不解釋字符串中出現(xiàn)的\。這種寫法通常用于編寫正則表達(dá)式或者Windows文件路徑。

Python支持列表切割(list slices),可以取得完整列表的一部分。支持切割操作的類型有str, bytes, list, tuple等。它的語法是...[left:right]或者...[left:right:stride]。假定nums變量的值是[1, 3, 5, 7, 8, 13, 20],那么下面幾個(gè)語句為真:

nums[2:5] == [5, 7, 8] 從下標(biāo)為2的元素切割到下標(biāo)為5的元素,但不包含下標(biāo)為5的元素。

nums[1:] == [3, 5, 7, 8, 13, 20] 切割到最后一個(gè)元素。

nums[:-3] == [1, 3, 5, 7] 從最開始的元素一直切割到倒數(shù)第3個(gè)元素。

nums[:] == [1, 3, 5, 7, 8, 13, 20] 返回所有元素。改變新的列表不會影響到nums。

nums[1:5:2] == [3, 7] 從下標(biāo)為1的元素切割到下標(biāo)為5的元素但不包含下標(biāo)為5的元素,且步長為2。

愿意了解更多的可關(guān)注:

http://minglisoft.cn/technology

朋友需要請加球球:2042849237
有詳細(xì)關(guān)于更多的Python技術(shù)知識的分享。謝謝!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI