lambda 表示式和匿名函式 eval函式

2021-09-12 06:07:25 字數 1621 閱讀 8916

lambda 表示式可以用來宣告匿名函式。

lambda 函式是一種簡單的、在同一行中定義函式的方法。lambda 函式實際生成了乙個函式物件。

lambda 表示式只允許包含乙個表示式,不能包含複雜語句,該表示式的計算結果就是函式的返回值

lambda 表示式的基本語法如下:

lambda arg1,arg2,arg3… : 《表示式》

函式引數:arg1,arg2,arg3

函式體:《表示式》

運算結果是:表示式的運算結果

f = lambda x,y:print(" *  = ".format(x,y,x*y))

f(9,9)

#該函式與下面的fun函式效果一樣

def fun(x,y):

return x*y

print(fun(9,9))

#lambda 也可以在列表中使用

a = [lambda x:x**3,lambda y:y**2,lambda x,y:x+y]

print("列印列表a每一項值:",a[0](3),a[1](6),a[2](3,6))

執行結果:

9 * 9 = 81

81列印列表a每一項值: 27 36 9

map()函式,需要兩個引數,第乙個引數是函式關係式,第二個是要傳入的引數列表。

x = [1,2,3,4,5]

#f = lambda x:x**2

#y = list(map(f,y_label))

y = list(map(lambda x:x**2,x_label))

結果: [1,4,9,16,25]

功能:將字串 str 當成有效的表示式來求值並返回計算結果。

語法:eval(source,[globals,[ locals]]) -> value

引數:

source:乙個 python 表示式或函式 compile()返回的**物件

globals:可選。必須是 dictionary

locals:可選。任意對映物件

s = "print('abcde')"

eval(s)

a = 10

b = 20

c = eval("a+b")

print(c)

dict1 = dict(a=100,b=200)

d = eval("a+b",dict1) #dict1中的a,b傳參給表示式「a + b」,所以列印出300

print(d)

執行結果:

abcd

30300

eval 函式會將字串當做語句來執行,因此會被注入安全隱患。比如:字串中含有刪除文

件的語句。那就麻煩大了。因此,使用時候,要慎重!!!

C 匿名函式和Lambda表示式

一 匿名函式 匿名函式不等於匿名方法,匿名函式包含了匿名方法和lambda表示式這兩種概念。1 匿名方法 1 委託 委託是用於引用與其具有相同標籤的方法。即可以使用委託物件呼叫可由委託引用的方法。2 匿名方法 anonymous methods 提供了一種傳遞 塊作為委託引數的技術。匿名方法是沒有名...

匿名函式 委託和Lambda表示式

其中匿名的函式簽名可以包括兩種,一種是隱式的匿名函式簽名另一種是顯式的匿名函式簽名 隱式的函式簽名 p p1,p1 顯式的函式簽名 int p int p1,int p2 ref int p1,out int p2 匿名的函式體可以是表示式或者 塊。從上面我們可以看出,lambda表示式的引數形式可...

4 6 匿名函式 Lambda表示式

4.6 匿名函式 lambda表示式 lambda函式是一種快速定義單行的最小函式,是從lisp借用來的,可以用在任何需要函式的地方。無須定義函式名稱 寫法舉例 g lambda x,y,z.x y lambda 構造的是乙個函式物件 example4.6.1 g lambda x,y x y g ...