Pythonのlambda文で匿名関数を宣言する使い方を例に挙げて説明します

2578 ワード

匿名関数とは、関数を定義する必要がなく、式のように使用し、関数名を必要としない(多くの場合名前が困っている)、いくつかの簡単な関数を単純化することです.例を挙げると、2つの整数を加算する関数が必要です.通常はこのように定義されています.

def add(x, y):
  return x + y

必要な機能はよく完成しましたが、文字列に数値を加算する関数が必要です.

def addstr(x, y):
  return x + str(y)

再び私の需要を完成しましたが、私は突然2つの整数を減らす必要があります.除去する機能はこのように関数をずっと書かなければなりませんが、lambda匿名関数を使って直接使用することができます.

#      
f = lambda x, y: x + y

f_str = lambda x, y: x + str(y)


操作を簡素化することで関数をより簡単にすることができますが、メンテナンス性が悪く、機能が複雑である必要がある場合に使用を推奨しないという欠点があります.
Lambda文の目的は、パフォーマンスのため、呼び出し時に関数のスタック割り当てを迂回することです.構文は次のとおりです.

lambda [arg1[, arg2, ... argN]]: expression


次に、lambda文の使用方法(パラメータなし)を例に挙げて説明します.
Python匿名関数lambda例(パラメータなし)Python

#   def       
def true():
  return True

#   lambda   
>>> lambda :True
 at 0x0000000001E42518>

#   lambda      ,      
>>> true = lambda :True
>>> true()
True

#   def       
def true():
  return True
 
#   lambda   
>>> lambda :True
 at 0x0000000001E42518>
 
#   lambda      ,      
>>> true = lambda :True
>>> true()
True


次に、パラメータ付きの例を挙げます.
Python匿名関数lambda例(パラメータを含む)Python

#   def     
def add( x, y ):
  return x + y

#   lambda    
lambda x, y: x + y

# lambda              
lambda x, y = 2: x + y
lambda *z: z

#   lambda  
>>> a = lambda x, y: x + y
>>> a( 1, 3 )
4
>>> b = lambda x, y = 2: x + y
>>> b( 1 )
3
>>> b( 1, 3 )
4
>>> c = lambda *z: z
>>> c( 10, 'test')
(10, 'test')

#   def     
def add( x, y ):
  return x + y
 
#   lambda    
lambda x, y: x + y
 
# lambda              
lambda x, y = 2: x + y
lambda *z: z
 
#   lambda  
>>> a = lambda x, y: x + y
>>> a( 1, 3 )
4
>>> b = lambda x, y = 2: x + y
>>> b( 1 )
3
>>> b( 1, 3 )
4
>>> c = lambda *z: z
>>> c( 10, 'test')
(10, 'test')


コードがより簡潔で、可読性を失わないように見えますか.