自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python入門之你必須了解的語法與類型

開發(fā) 前端 后端
Python的設(shè)計(jì)目標(biāo)之一是讓源代碼具備高度的可讀性。它設(shè)計(jì)時(shí)盡量使用其它語言經(jīng)常使用的標(biāo)點(diǎn)符號(hào)和英語單詞,讓源代碼整體看起來很整潔美觀。

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

縮進(jìn)

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

if語句:

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

根據(jù)PEP的規(guī)定,必須使用4個(gè)空格來表示每級(jí)縮進(jìn)。使用Tab字符和其它數(shù)目的空格雖然都可以編譯通過,但不符合編碼規(guī)范。支持Tab字符和其它數(shù)目的空格僅僅是為了兼容很舊的Python程序和某些有問題的編輯器。

語句和控制流

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

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

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

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

◆ class語句。用于定義類型。

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

◆ pass語句。表示此行為空,不執(zhí)行任何操作。

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

◆ with語句。Python2.6以后定義的語法,在一個(gè)場(chǎng)景中運(yùn)行語句塊。比如,運(yùn)行語句塊前加鎖,然后在語句塊運(yùn)行結(jié)束后釋放它。

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

表達(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è)對(duì)象。in, not in用于判斷一個(gè)對(duì)象是否屬于另外一個(gè)對(duì)象。

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

  1. >>> sum(x * x for x in range(10))285 

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

  1. >>> 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)。可以改變list中的元素,而不能改變tuple。在某些情況下,tuple的括號(hào)可以省略。tuple對(duì)于賦值語句有特殊的處理。因此,可以同時(shí)賦值給多個(gè)變量,比如:

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

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

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

◆ Python使用'(單引號(hào))和"(雙引號(hào))來表示字符串。與Perl、Unix Shell語言或者Ruby、Groovy等語言不一樣,兩種符號(hào)作用相同。一般地,如果字符串中出現(xiàn)了雙引號(hào),就使用單引號(hào)來表示字符串;反之則使用雙引號(hào)。如果都沒有出現(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)為2的元素。

◆ 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] 返回所有元素。改變新的列表不會(huì)影響到nums。

◆ nums[1:5:2] == [3, 7]

函數(shù)

Python的函數(shù)支持遞歸、默認(rèn)參數(shù)值、可變參數(shù),但不支持函數(shù)重載。為了增強(qiáng)代碼的可讀性,可以在函數(shù)后書寫”文檔字符串“(Documentation Strings,或者簡(jiǎn)稱docstrings),用于解釋函數(shù)的作用、參數(shù)的類型與意義、返回值類型與取值范圍等??梢允褂脙?nèi)置函數(shù)help()打印出函數(shù)的使用幫助。比如:

  1. >>> def randint(a, b):  
  2.  ...     "Return random integer in range [a, b], including both end points." 
  3.  ...  
  4.  >>> help(randint)  
  5.  Help on function randint in module __main__:  
  6.     
  7.  randint(a, b)  
  8.      Return random integer in range [a, b], including both end points. 

對(duì)象的方法

對(duì)象的方法是指綁定到對(duì)象的函數(shù)。調(diào)用對(duì)象方法的語法是instance.method(arguments)。它等價(jià)于調(diào)用Class.method(instance, arguments)。當(dāng)定義對(duì)象方法時(shí),必須顯式地定義***個(gè)參數(shù)為self,用于訪問對(duì)象的內(nèi)部數(shù)據(jù)。self相當(dāng)于C++, Java里面的this變量。比如:

  1. class Fish:  
  2.     def eat(self, food):  
  3.         if food is not None:  
  4.             self.hungry=False 
  5.    
  6. #構(gòu)造Fish的實(shí)例:  
  7. f=Fish()  
  8. #以下兩種調(diào)用形式是等價(jià)的:  
  9. Fish.eat(f, "earthworm")  
  10. f.eat("earthworm"

Python認(rèn)識(shí)一些以”__“開始并以"__"結(jié)束的特殊方法名,它們用于實(shí)現(xiàn)運(yùn)算符重載和實(shí)現(xiàn)多種特殊功能。

類型

Python采用動(dòng)態(tài)類型系統(tǒng)。在編譯的時(shí)候,Python不會(huì)檢查對(duì)象是否擁有被調(diào)用的方法或者屬性,而是直至運(yùn)行時(shí),才做出檢查。所以操作對(duì)象時(shí)可能會(huì)拋出異常。不過,雖然Python采用動(dòng)態(tài)類型系統(tǒng),它同時(shí)也是強(qiáng)類型的。Python禁止沒有明確定義的操作,比如數(shù)字加字符串。

與其它面向?qū)ο笳Z言一樣,Python允許程序員定義類型。構(gòu)造一個(gè)對(duì)象只需要像函數(shù)一樣調(diào)用類型即可,比如,對(duì)于前面定義的Fish類型,使用Fish()。類型本身也是特殊類型type的對(duì)象(type類型本身也是type對(duì)象),這種特殊的設(shè)計(jì)允許對(duì)類型進(jìn)行反射編程。

Python內(nèi)置豐富的數(shù)據(jù)類型。與Java、C++相比,這些數(shù)據(jù)類型有效地減少代碼的長(zhǎng)度。下面這個(gè)列表簡(jiǎn)要地描述了Python內(nèi)置數(shù)據(jù)類型(適用于Python 3.x):

除了各種數(shù)據(jù)類型,Python語言還用類型來表示函數(shù)、模塊、類型本身、對(duì)象的方法、編譯后的Python代碼、運(yùn)行時(shí)信息等等。因此,Python具備很強(qiáng)的動(dòng)態(tài)性。

數(shù)學(xué)運(yùn)算

Python使用與C、Java類似的運(yùn)算符,支持整數(shù)與浮點(diǎn)數(shù)的數(shù)學(xué)運(yùn)算。同時(shí)還支持復(fù)數(shù)運(yùn)算與無窮位數(shù)(實(shí)際受限于計(jì)算機(jī)的能力)的整數(shù)運(yùn)算。除了求絕對(duì)值函數(shù)abs()外,大多數(shù)數(shù)學(xué)函數(shù)處于math和cmath模塊內(nèi)。前者用于實(shí)數(shù)運(yùn)算,而后者用于復(fù)數(shù)運(yùn)算。使用時(shí)需要先導(dǎo)入它們,比如:

  1. >>> import math  
  2. >>> print(math.sin(math.pi/2))  
  3. 1.0 

fractions模塊用于支持分?jǐn)?shù)運(yùn)算;decimal模塊用于支持高精度的浮點(diǎn)數(shù)運(yùn)算。

Python定義求余運(yùn)行a % b的值處于開區(qū)間[0, b)內(nèi),如果b是負(fù)數(shù),開區(qū)間變?yōu)?b, 0]。這是一個(gè)很常見的定義方式。不過其實(shí)它依賴于整除的定義。為了讓方程式:b * (a // b) + a % b = a恒真,整除運(yùn)行需要向負(fù)無窮小方向取值。比如7 // 3的結(jié)果是2,而(-7) // 3的結(jié)果卻是-3。這個(gè)算法與其它很多編程語言不一樣,需要注意,它們的整除運(yùn)算會(huì)向0的方向取值。

Python允許像數(shù)學(xué)的常用寫法那樣連著寫兩個(gè)比較運(yùn)行符。比如a < b < c與a < b and b < c等價(jià)。C++的結(jié)果與Python不一樣,首先它會(huì)先計(jì)算a < b,根據(jù)兩者的大小獲得0或者1兩個(gè)值之一,然后再與c進(jìn)行比較。

原文:http://www.cnblogs.com/mcdou/archive/2011/08/02/2125016.html

【編輯推薦】

  1. 每個(gè)程序員都應(yīng)該學(xué)習(xí)使用Python或Ruby
  2. Perl、PHP、Python、Java和Ruby的比較
  3. 用Python開發(fā)可用于iPhone的Google Reader API
  4. Python高手是如何練成的
  5. Python入門之你必須了解的實(shí)用技巧
責(zé)任編輯:陳貽新 來源: 麥豆同學(xué)
相關(guān)推薦

2011-06-21 10:02:29

Python

2011-05-20 13:52:31

2014-02-10 10:13:43

2018-05-30 16:55:47

阿里Java多線程

2016-09-27 13:47:15

Linux網(wǎng)絡(luò)命令

2024-09-13 09:59:27

2018-09-21 11:11:34

備份離線自動(dòng)

2018-11-08 12:07:38

備份手動(dòng)磁盤

2023-04-06 07:49:23

Python數(shù)據(jù)類型

2012-05-14 13:49:56

2020-02-25 17:13:15

移動(dòng)開發(fā)iOSAndroid

2023-04-26 16:34:12

2025-01-16 10:41:40

2017-01-17 11:09:33

大數(shù)據(jù)關(guān)鍵詞工具

2010-05-10 11:08:28

IPv6

2020-10-13 06:56:19

JavaScript異常類型開發(fā)

2021-10-21 08:13:11

Springboot

2023-11-07 12:30:38

數(shù)據(jù)結(jié)構(gòu)紅黑樹

2016-12-15 17:14:38

伊頓

2015-10-23 15:22:16

AsyncTask基礎(chǔ)Android
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)