1. 程式人生 > 其它 >Python Task06:函式與Lambda表示式

Python Task06:函式與Lambda表示式

技術標籤:python

Python Task06:函式與Lambda表示式

  1. 怎麼給函式編寫⽂檔?

    添加註釋(以 # 開頭的內容):
    新增獨⽴的文件字串

  2. 怎麼給函式引數和返回值註解?

    引數註解:在定義函式的時候,在引數列表內部的引數後面加上冒號和要傳入的型別

    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,即型別。

  3. 閉包中,怎麼對數字、字串、元組等不可變元素更新。

    如果要修改閉包作用域中的變數則需要 nonlocal 關鍵字

  4. 分別根據每一行的首元素和尾元素大小對二維列表 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
    
  5. 利用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)