書接上文,接演Python全傳程序員
話說學了這麼多Python的基礎知識,也該寫一點讓別人看不懂的代碼了。函數
lambda學習
lambda表達式,是一個方法的簡化形似,它沒有本身的代碼塊,它後面的語句就是它的邏輯主體。lambda語句被用來建立新的函數對象,而且在運行的時候返回它們。spa
# Fileanme:lambda.py def make_repeater(n): return lambda s:s*n twice = make_repeater(2) print(twice('word')) print(twice(5))
運行結果3d
此次有一點小複雜,在咱們定義一個函數的時候,返回一個lambda表達式,根據結果分析程序,當咱們對函數傳入第一次參數的時候,定義的函數就變成了:code
def make_repeater(2): return lambda s:s*2
這個函數發生了改變,可是仍是缺乏一個參數s,因此當咱們再次調用函數的時候這個時候twice表示一個新的函數,就須要傳入一個參數s,進行處理。對象
須要注意的一點是,在lambda表達式中只能使用表達式。blog
看一個網上的例子:索引
list(filter(lambda x:True if x % 3 == 0 else False,range(100)))
list(map(lambda x:True if x % 3 == 0 else False,range(100)))
運行結果字符串
這裏使用了filter和map方法,咱們簡單來看一下;
在filter中傳入一個方法一個序列,這個方法會將序列中的值依次傳入到方法中而後生成一個新的序列。
map是將方法中的計算結果生成一個新的序列返回。
exec和eval語句
exec語句用來執行儲存在字符串或文件中的Python語句。
eval語句用來計算存儲在字符串中的有效Python表達式。
經過例子就很好理解啦。
assert(斷言)語句
斷言語句用來聲明某個聲明條件是真的。
若是你很是確信某個你使用的列表中至少有一個元素,而你想要檢驗這一點,而且在它非真的時候引起一個錯誤,那麼assert
語句是應用在這種情形下的理想語句。當assert語句失敗的時候,會引起一個AssertionError
。(不是很懂)看例子。
看完也不是很懂。。。。。。
再看:
移除並返回索引處的項(默認最後一個)。若是列表爲空或索引超出範圍,則引起IndexError。
list中的元素被移除了,因此它的長度就沒有了,因此斷言錯誤,因此沒毛病了。
repr函數
repr函數用來取得對象的規範字符串表示。反引號(也稱轉換符)能夠完成相同的功能。注意,在大多數時候有eval(repr(object)) == object
。
哈哈哈,這個厲害啦,repr()變成字符串了,eval()把字符串中的表達出來,能夠這個很夢幻。基本上,repr
函數和反引號用來獲取對象的可打印的表示形式。你能夠經過定義類的__repr__
方法來控制你的對象在被repr
函數調用的時候返回的內容。
歸納
在這一章中,咱們又學習了一些Python的特點,然而你能夠確定咱們並無學習完Python的全部特點。不過,到目前爲止,咱們確實已經學習了絕大多數你在實際中會使用的內容。這些已經足以讓你去建立任何程序了。
加油程序員。