Rumah > pembangunan bahagian belakang > Tutorial Python > Artikel untuk membimbing anda melalui fungsi tanpa nama Python

Artikel untuk membimbing anda melalui fungsi tanpa nama Python

Lepaskan: 2023-07-25 15:58:36
ke hadapan
1675 orang telah melayarinya

1. Pengenalan

Apabila lulus dalam fungsi, kadang-kadang tidak perlu untuk mentakrifkan fungsi secara jelas.


2. Fungsi tanpa nama

Dalam Python, sokongan terhad disediakan untuk fungsi tanpa nama. Masih mengambil fungsi map() sebagai contoh, apabila mengira f(x)=x2, selain mentakrifkan fungsi f(x), anda juga boleh meneruskan fungsi tanpa nama secara terus :

print(list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])))
Salin selepas log masuk

Artikel untuk membimbing anda melalui fungsi tanpa nama Python

Ia boleh dilihat melalui perbandingan bahawa fungsi tanpa nama lambda x: Mewakili parameter fungsi.

Fungsi tanpa nama mempunyai had:

就是只能有一个表达式,不用写return,返回值就是该表达式的结果。

匿名函数有个好处:

因为函数没有名字,不必担心函数名冲突。此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数:

f = lambda x: x * x
print(f)


print(f(5))
Salin selepas log masuk

Artikel untuk membimbing anda melalui fungsi tanpa nama Python

同样,也可以把匿名函数作为返回值返回,比如:

def build(x, y):
    return lambda: x * x + y * y
Salin selepas log masuk

匿名函数的使用

匿名函数通常被用作高阶函数(higher-order function,参数为函数的函数)的参数。比如,几个内置函数:filter(),map(),reduce()。下面分别看看这几个函数的用法及达到相同效果的python另一种特征的用法

1. filter函数

list = [1, 2, 3]
result = filter(lambda x: x % 2 == 0, list)
print(result)
result = [x for x in list if x % 2 == 0]
print(result)
Salin selepas log masuk

Artikel untuk membimbing anda melalui fungsi tanpa nama Python

2. map函数

result = map(lambda x: x*2, list)
print(result)
result = [x*2 for x in list]
print(result)
Salin selepas log masuk

Artikel untuk membimbing anda melalui fungsi tanpa nama Python

注:

map和filter函数都可以使用列表推导式(list comprehension)代替。

据说,当年lambda是一个Lisp程序员给python加的,而Guido是强烈反对的,最中意的是列表推导式。

3. 跳转表(jump table)

lambda的另一种用法是用来编写跳转表,也就是行为列表或字典,能按需执行特定的动作。

key = "get"
 {"abc":(lambda : 2 + 2),"bcd" : (lambda : 3 + 3), "get" : (lambda : 4 + 4)}[key]()
8
Salin selepas log masuk

Artikel untuk membimbing anda melalui fungsi tanpa nama Python


三、总结

本文基于Python基础,介绍了在实际中匿名函数的使用,介绍了常见的匿名函数, filter函数,map函数,通过一个案例 ( 跳转表) 的分析 ,代码的演示,进行详细的讲解。

Python对匿名函数的支持有限,只有一些简单的情况下可以使用匿名函数。使用Python语言 ,能够让读者更好的理解。

Atas ialah kandungan terperinci Artikel untuk membimbing anda melalui fungsi tanpa nama Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:Go语言进阶学习
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan