Learning Python Part II 之 表達式語句(Expression)

在Python中,你也可以把表達式當做一條語句來用——自己獨佔一行。但因爲表達式的值不會被保留,所以只有當有意義的時候才這樣做。常見於下列兩種情況:

爲了調用函數或方法:

一些函數和方法完成自己的功能之後不需要返回值,可以通過表達式語句調用這些函數或方法。

爲了在交互式提示符中打印值:

Python返回輸入交互式命令行的表達式的值,其實這些也是表達式語句,服務於 print 語句

常見的表達式語句形式:
這裏寫圖片描述

上表中的後兩個有一點特殊,print在Python3.x中是一個函數並且時長獨佔一行;yield在生成器中也時常作爲一個語句;這兩種都是表達式語句的實例。
例如, 雖然在3.X中print作爲表達式語句單獨一行調用,它像其他函數調用一樣返回一個值(返回值是None,沒有任何意義)

>>> x  = print('spam')
spam
>>> print(x)
None

並且要銘記,在Python中儘管表達式可以以語句的形式出現,但是語句並不能用作表達式。非表達式語句只能單獨一行出現,不能嵌套在其他更大的語法結構中。例如:Python不允許將賦值語句=嵌套在其他表達式中。這麼做是爲了避免常見的錯誤,如你不能通過=突然改變一個變量的值當你真正想做的是==相等驗證。

有一個常見的錯誤,表達式語句常用作列表方法去就地改變列表(in-place change)

>>> L = [1, 2]
>>> L.append(3)
>>> L
[1, 2, 3]

但是,對於新手來說把這樣的操作寫成賦值語句的形式的情況並不罕見

>>> L = L.append(4)
>>> print(L)   #已經關閉了列表L
None

儘管這並不會報錯,調用一個就地改變的操作例如append sort reverse往往會就地改變列表,這些方法並不會返回一個改變過的列表,而是返回的None對象,而如果再賦值給列表,往往會關閉列表(會被Python的垃圾回收機制回收)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章