python學習-03

##匿名函數lambda##

    lambda 函數也叫匿名函數,即,函數沒有具體的名稱,而用def創建的方法是有名稱的.
  python 允許用lambda關鍵字創造匿名函數,匿名是因爲不需要以標準的方式來聲明,比如,使用def語句,
  但是作爲函數,它們也能有參數,一個完整的lambda語句代表一個表達式,這個表達式的定義體必須和聲明放
  在同一行.
   ##python中單行參數可以和標題寫在一行.   如:  def fun():return 'hello'
    而此處 lambda 函數只能寫一行

   語法:  lambda [arg1[,arg2,arg3...argN]]:expression
    lambda 語句中,冒號前是參數,可以有多個,用逗號隔開,冒號右邊的返回值(返回值可以是表達式).
    lambda 語句構建的其實是一個函數對象

 
  <沒有參數>
    冒號前沒有 如:  lambda:"hello"  
        調用:  print lambda:"hello"
            或者: a = lambda:"hello"
            print a



  <有參數>
     冒號前有   如:    lambda x,y : x+y
            調用  print lambda x=1,y=1 : x+y
                或者: a = lambda x,y : x+y
                print a(1,1)
     默認參數: b = lambda x,y=1 : x+y
            print b(1),b(1,2)
    參數爲元組:  c = lambda *x: x

            print c('hello','world',1,2)



   <與def>
    lambda 函數只是創建簡單的函數對象是一個函數的單行版本,調用的時候繞過函數的棧分配
        1>lambda 會創建一個函數對象,但是不會把這個對象賦給標示符,而是靠標示符去引用他,
            而def會把函數對象賦值給一個變量.
              >>> a = lambda x,y:x+y
              >>> a
              <function <lambda> at 0x7ff9ab557938>
              >>> def b():return 11
              >>> b
              <function b at 0x7ff9ab5579b0>
           2>lambda 只是一個表達式,而def是一個語句塊.lambda 被調用時創建一個框架對象


 
發佈了54 篇原創文章 · 獲贊 32 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章