python整体设计目标_Python 入門語法和類型(学习)
http://www.cnblogs.com/mcdou/archive/2011/08/02/2125016.html
Python的設計目標之一是讓源代碼具備高度的可讀性。它設計時盡量使用其它語言經常使用的標點符號和英語單詞,讓源代碼整體看起來很整潔美觀。它不像靜態語言如C、Pascal那樣需要重復書寫聲明語句,也不像它們的語法那樣經常有特殊情況和驚喜。
縮進
Python開發者有意讓違反了縮進規則的程序不能通過編譯,以此來強制程序員養成良好的編程習慣。并且在Python語言里,縮進而非花括號或者某種關鍵字,被用于表示語句塊的開始和退出。增加縮進表示語句塊的開始,而減少縮進則表示語句塊的退出。縮進成為了語法的一部分。例如
if語句:
ifage<21:print("你不能買酒。")print("不過你能買口香糖。")print("這句話處於if語句塊的外面。")
根據PEP的規定,必須使用4個空格來表示每級縮進。使用Tab字符和其它數目的空格雖然都可以編譯通過,但不符合編碼規范。支持Tab字符和其它數目的空格僅僅是為了兼容很舊的Python程序和某些有問題的編輯器。
語句和控制流
if語句,當條件成立時執行語句塊。經常與else,elif(相當于else if)配合使用。
for語句,遍歷列表、字符串、字典、集合等迭代器,依次處理迭代器中的每個元素。
while語句,當條件為真時,循環執行語句塊。
try語句。與except,finally配合使用處理在程序運行中出現的異常情況。
class語句。用于定義類型。
def語句。用于定義函數和類型的方法。
pass語句。表示此行為空,不執行任何操作。
assert語句。用于程序調試階段時測試運行條件是否滿足。
with語句。Python2.6以后定義的語法,在一個場景中運行語句塊。比如,運行語句塊前加鎖,然后在語句塊運行結束后釋放它。
yield語句。在迭代器函數內使用,用于返回一個元素。自從Python 2.5版本以后。這個語句變成一個運算符。
表達式
Python的表達式寫法與C/C++類似。只是在某些寫法有所差別。
主要的算術運算符與C/C++類似。+, -, *, /, //, **, ~,?%分別表示加法或者取正、減法或者取負、乘法、除法、整除、乘方、取補、取模。>>, <, =用于比較兩個表達式的值,分別表示大于、小于、等于、不等于、小于等于、大于等于。在這些運算符里面,~, |, ^, &, <>必須應用于整數。
Python使用and,?or,?not表示邏輯運算。
is, is not用于比較兩個變量是否是同一個對象。in, not in用于判斷一個對象是否屬于另外一個對象。
Python支持"列表推導式"(list comprehension),比如計算0-9的平方和:
>>>sum(x*xforxinrange(10))285
Python使用lambda表示匿名函數。匿名函數體只能是表達式。比如:
>>>add=lambdax, y : x+y>>>add(3,2)5
Python使用y if cond else x表示條件表達式。意思是當cond為真時,表達式的值為y,否則表達式的值為x。相當于C++和Java里的cond?y:x。
Python區分列表(list)和元組(tuple)兩種類型。list的寫法是[1,2,3],而tuple的寫法是(1,2,3)。可以改變list中的元素,而不能改變tuple。在某些情況下,tuple的括號可以省略。tuple對于賦值語句有特殊的處理。因此,可以同時賦值給多個變量,比如:
>>>x, y=1,2#同時給x,y賦值,最終結果:x=1, y=2
特別地,可以使用以下這種形式來交換兩個變量的值:
>>>x, y=y, x#最終結果:y=1, x=2
Python使用'(單引號)和"(雙引號)來表示字符串。與Perl、Unix Shell語言或者Ruby、Groovy等語言不一樣,兩種符號作用相同。一般地,如果字符串中出現了雙引號,就使用單引號來表示字符串;反之則使用雙引號。如果都沒有出現,就依個人喜好選擇。出現在字符串中的\(反斜杠)被解釋為特殊字符,比如\n表示換行符。表達式前加r指示Python不解釋字符串中出現的\。這種寫法通常用于編寫正則表達式或者Windows文件路徑。
Python支持列表切割(list slices),可以取得完整列表的一部分。支持切割操作的類型有str, bytes, list, tuple等。它的語法是...[left:right]或者...[left:right:stride]。假定nums變量的值是[1, 3, 5, 7, 8, 13, 20],那么下面幾個語句為真:
nums[2:5] == [5, 7, 8]?從下標為2的元素切割到下標為5的元素,但不包含下標為2的元素。
nums[1:] == [3, 5, 7, 8, 13, 20]?切割到最后一個元素。
nums[:-3] == [1, 3, 5, 7]?從最開始的元素一直切割到倒數第3個元素。
nums[:] == [1, 3, 5, 7, 8, 13, 20]?返回所有元素。改變新的列表不會影響到nums。
nums[1:5:2] == [3, 7]
函數
Python的函數支持遞歸、默認參數值、可變參數,但不支持函數重載。為了增強代碼的可讀性,可以在函數后書寫”文檔字符串“(Documentation Strings,或者簡稱docstrings),用于解釋函數的作用、參數的類型與意義、返回值類型與取值范圍等。可以使用內置函數help()打印出函數的使用幫助。比如:
1 >>>defrandint(a, b):2 ..."Return random integer in range [a, b], including both end points."3 ...4 >>>help(randint)5 Help on function randintinmodule__main__:6 7 randint(a, b)8 Return random integerinrange [a, b], including both end points.
對象的方法
對象的方法是指綁定到對象的函數。調用對象方法的語法是instance.method(arguments)。它等價于調用Class.method(instance, arguments)。當定義對象方法時,必須顯式地定義第一個參數為self,用于訪問對象的內部數據。self相當于C++, Java里面的this變量。比如:
classFish:defeat(self, food):iffoodisnotNone:
self.hungry=False#構造Fish的實例:f=Fish()#以下兩種調用形式是等價的:Fish.eat(f,"earthworm")
f.eat("earthworm")
Python認識一些以”__“開始并以"__"結束的特殊方法名,它們用于實現運算符重載和實現多種特殊功能。
類型
Python采用動態類型系統。在編譯的時候,Python不會檢查對象是否擁有被調用的方法或者屬性,而是直至運行時,才做出檢查。所以操作對象時可能會拋出異常。不過,雖然Python采用動態類型系統,它同時也是強類型的。Python禁止沒有明確定義的操作,比如數字加字符串。
與其它面向對象語言一樣,Python允許程序員定義類型。構造一個對象只需要像函數一樣調用類型即可,比如,對于前面定義的Fish類型,使用Fish()。類型本身也是特殊類型type的對象(type類型本身也是type對象),這種特殊的設計允許對類型進行反射編程。
Python內置豐富的數據類型。與Java、C++相比,這些數據類型有效地減少代碼的長度。下面這個列表簡要地描述了Python內置數據類型(適用于Python 3.x):
類型
描述
例子
str
一個由字符組成的不可更改的有串行。在Python 3.x里,字符串由Unicode字符組成。
'Wikipedia'
"Wikipedia"
"""Spanning
multiple
lines"""
bytes
一個由字節組成的不可更改的有串行。
b'Some ASCII'
b"Some ASCII"
list
可以包含多種類型的可改變的有串行
[4.0, 'string', True]
tuple
可以包含多種類型的不可改變的有串行
(4.0, 'string', True)
set, frozenset
與數學中集合的概念類似。無序的、每個元素唯一。
{4.0, 'string', True}
frozenset([4.0, 'string', True])
dict
一個可改變的由鍵值對組成的無串行。
{'key1': 1.0, 3: False}
int
精度不限的整數
42
float
浮點數。精度與系統相關。
3.1415927
complex
復數
3+2.7j
bool
邏輯值。只有兩個值:真、假
True
False
除了各種數據類型,Python語言還用類型來表示函數、模塊、類型本身、對象的方法、編譯后的Python代碼、運行時信息等等。因此,Python具備很強的動態性。
數學運算
Python使用與C、Java類似的運算符,支持整數與浮點數的數學運算。同時還支持復數運算與無窮位數(實際受限于計算機的能力)的整數運算。除了求絕對值函數abs()外,大多數數學函數處于math和cmath模塊內。前者用于實數運算,而后者用于復數運算。使用時需要先導入它們,比如:
>>>importmath>>>print(math.sin(math.pi/2))1.0
fractions模塊用于支持分數運算;decimal模塊用于支持高精度的浮點數運算。
Python定義求余運行a?% b的值處于開區間[0, b)內,如果b是負數,開區間變為(b, 0]。這是一個很常見的定義方式。不過其實它依賴于整除的定義。為了讓方程式:b * (a // b) + a?% b = a恒真,整除運行需要向負無窮小方向取值。比如7 // 3的結果是2,而(-7) // 3的結果卻是-3。這個算法與其它很多編程語言不一樣,需要注意,它們的整除運算會向0的方向取值。
Python允許像數學的常用寫法那樣連著寫兩個比較運行符。比如a < b < c與a < b and b < c等價。C++的結果與Python不一樣,首先它會先計算a < b,根據兩者的大小獲得0或者1兩個值之一,然后再與c進行比較。
總結
以上是生活随笔為你收集整理的python整体设计目标_Python 入門語法和類型(学习)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php母版页怎么,ASP.NET
- 下一篇: telnet后为啥打开的时防火墙_《和平