lambda函數也叫匿名函數,語法結構以下:python
lambda x:x+1
x --> 形參
x+1 --> 返回值,至關於return x+1函數
def foo(x): return x+1 print(foo(1)) 運行結果: >>> 2 # 使用lambda函數替換如上函數: lambda x:x+1 f = lambda x:x+1 print(f(1)) 運行結果: >>> 2
def change_name(name): return name + "_xiyouji" print(change_name("sunwuk")) 運行結果: >>> sunwuk_xiyouji ---------- 使用lambda函數方法: f = lambda x:x+"_xiyouji" print(f('sunwuk')) 運行結果: >>> sunwuk_xiyouji
f = lambda :True print(f()) 運行結果 >>> True 等價於以下函數 def f(): reture True print(f()) 運行結果 >>> True
s = 'this is\na\ttest' print(s) print(s.split()) # split函數默認分割:空格,換行符,TAB鍵 print(' '.join(s.split())) 運行結果: >>> this is >>> a test >>> ['this', 'is', 'a', 'test'] >>> this is a test 用join函數把列表轉換成字符串 f = lambda :' '.join(s.split()) print(f()) 或 print((lambda s:' '.join(s.split()))('this is\na\ttest')) 運行結果: >>> this is a test """ print((lambda x:x+1)(12)) 至關於把12做爲形參傳入lambda函數中 """
# lambda x: x**3 一個參數 print((lambda x:x**3)(2)) 運行結果 >>> 8 # lambda x,y,z:(x+y+z) 多個參數 print((lambda x,y,z:(x+y+z))(1,2,3)) 運行結果: >>> 6 # lambda x,y=3:(x*y) 容許參數存在默認值 print((lambda x,y=2:(x+y))(2)) 運行結果: >>> 4
#直接賦值給一個變量,而後再像通常函數調用 f = lambda x,y,z:(x*y*z) print(f(2,3,4)) # 返回一個元祖 a = lambda *z:z print(a('Testing1','Testing2')) 運行結果: >>> ('Testing1', 'Testing2') 上例中至關於使用了函數的不定長參數*args,返回值爲元組 def foo(*args): print(args) foo("zhubj","sunwk",'sas') 運行結果: >>> ('zhubj', 'sunwk', 'sas') #返回一個字典 c = lambda **arg:arg print(c(a=1,b=2)) 運行結果: >>> {'a': 1, 'b': 2} 上例中相對於使用了函數的**kwargs參數,返回值爲字典 def foo(x,**kwargs): print(x) print(kwargs) foo(1,a=2,b=3) 運行結果: >>> 1 >>> {'a': 2, 'b': 3} #直接後面傳遞實參 print((lambda x,y:x if x > y else y)(1,2)) 運行結果: >>> 2