Python Task06:函式與Lambda表示式
阿新 • • 發佈:2021-01-31
技術標籤:python
Python Task06:函式與Lambda表示式
-
怎麼給函式編寫⽂檔?
添加註釋(以 # 開頭的內容):
新增獨⽴的文件字串 -
怎麼給函式引數和返回值註解?
引數註解:在定義函式的時候,在引數列表內部的引數後面加上冒號和要傳入的型別
def accumlate(x:int, y:int): return x*y 12
返回值註解:在引數列表後面,冒號前面,增加一個 -> 符號,後面寫返回值的型別。
def accumlate(x:int, y:int) -> int: return x*y 12
這些註解都會以字典的形式存在函式的 .annotations
accumlate.__annotations__ {'x': int, 'y': int, 'return': int} print(accumlate.__annotations__) {'x': <class 'int'>, 'y': <class 'int'>, 'return': <class 'int'>} 12345 123456
輸出字典中的value存的是資料的type,即型別。
-
閉包中,怎麼對數字、字串、元組等不可變元素更新。
如果要修改閉包作用域中的變數則需要 nonlocal 關鍵字
-
分別根據每一行的首元素和尾元素大小對二維列表 a = [[6, 5], [3, 7], [2, 8]] 排序。(利用lambda表示式)
a = [[6, 5], [3, 7], [2, 8]] a.sort( key=lambda a:a[0]) print(a) a.sort( key=lambda a:a[1]) print(a) 12345
-
利用python解決漢諾塔問題?
有a、b、c三根柱子,在a柱子上從下往上按照大小順序摞著64片圓盤,把圓盤從下面開始按大小順序重新擺放在c柱子上,嘗試用函式來模擬解決的過程。(提示:將問題簡化為已經成功地將a柱上面的63個盤子移到了b柱)
def f(a):
new=list(reversed(a))
return new
a=list(range (64))
c=f(f(a))
print(c)