python3 lambda表达式函数

def _not_divisible(n):
bk = lambda x: x % n > 0
return bk

请教大神帮忙解释下,这个函数到底啥意思。最近在自学python3,发现高阶函数部分越来越抽象,有点吃力了。遇到这个问题,望大神不吝赐教。

lambda你可以理解为一个函数生成器,他返回的是一个函数,比如你代码中的lambda x:x%n意思就是返回一个函数,这个函数的作用是算X%n的值.所以返回的return bk之后,bk成了一个函数这个函数接收一个参数X
我也刚学到这卡了,网上找的这个理解起来比较舒服一点
下面是自己总结的,运行也能成功。答案也是对的。。
_not_divisible(n)返回值是一个函数,这个函数接收一个(X)参数
_not_divisible(n)(X)
温馨提示:内容为网友见解,仅供参考
第1个回答  2017-12-14
返回的是一个函数。。。
lambda 就是匿名函数。。。函数一般是接收(可以不接受)参数,执行特定的功能,然后返回(返回可以为空)
lambda x:x%n > 0,意思是这个匿名干了一件事,什么事呢,就是用函数的参数,对n取模后,判断是否大于0。其实就是判断函数的参数,是否是n的整数倍。然后返回的是这个匿名函数,然后_not_divisible函数再把这个匿名函数返回给调用者。
所以,bk就是一个函数。但这个函数可以通过n去控制
比如,调用divi_5 = _not_divisible(5),返回的是一个函数,这个函数接受一个参数,如果参数可以整除5,就返回False,否则True
怎么用呢?divi_5现在是指向到一个函数了,所以,它就是函数喽
divi_5(10)追问

那请问下,x是从哪冒出来的,谁给他赋值啊?这玩意跟java套路完全不一样啊。

本回答被网友采纳
相似回答