Python3 匿名函數

一 匿名函數

lambda函數也叫匿名函數,語法結構以下:python

lambda x:x+1
x --> 形參
x+1 --> 返回值,至關於return x+1函數

實例(Python3.0+):

def foo(x):
	return x+1
print(foo(1))		

運行結果:
>>> 2

# 使用lambda函數替換如上函數:
lambda x:x+1
f = lambda x:x+1
print(f(1))

運行結果:
>>> 2    

例題:把字符串"sunwuk"變成'sunwuk_xiyouji'

def change_name(name):
    return name + "_xiyouji"
print(change_name("sunwuk"))

運行結果:
>>> sunwuk_xiyouji

----------
使用lambda函數方法:
f = lambda x:x+"_xiyouji"
print(f('sunwuk'))    

運行結果:
>>> sunwuk_xiyouji

如下是我複製過來的一些代碼,正是經過這些代碼讓我對匿名函數有了一個比較深刻的瞭解,很感謝不知名的做者。 

無參數匿名函數

實例(Python3.0+):

f = lambda :True
print(f())

運行結果
>>> True

等價於以下函數
def f():
  reture True
print(f())

運行結果
>>> True

字符串正常輸出

實例(Python3.0+):

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函數中
"""

帶參數匿名函數

實例(Python3.0+):

# 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

匿名函數調用  

實例(Python3.0+):

#直接賦值給一個變量,而後再像通常函數調用
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
相關文章
相關標籤/搜索