1
zhuangzhuang1988 2016-08-16 19:58:59 +08:00
理解下函数签名。。。
|
2
Newyorkcity OP @zhuangzhuang1988 可以更具体一点么...
|
3
Newyorkcity OP @zhuangzhuang1988
是不是 lambda x : x % n > 0 会返回一个布尔值,可是这个布尔值并不是_not_divisible 的返回值,所以才在 lambda 之前又加了一个 return? 相当于 def f(x,n): return x % n > 0 def _not_divisible(x,n): return f(x,n) 这样子? 那干嘛不直接 def _not_divisible(x,n): return x % n > 0 是因为 filter 传入的函数无法接受两个变量么? |
4
yexiaoxing 2016-08-16 20:10:16 +08:00 via Android 1
_not_divisible 返回的好像是一个函数不是一个值哦
可以在 python shell 里运行一下试试 比如运行 _not_divisible(5)(2) |
5
Newyorkcity OP @yexiaoxing
运行了一下返回的是一个 True 所以我觉得「是不是 lambda x : x % n > 0 会返回一个布尔值,可是这个布尔值并不是_not_divisible 的返回值,所以才在 lambda 之前又加了一个 return? 」这个理解应该没问题? 不过「_not_divisible(5)(2)」很关键啊...就是那个(2)应该是赋值向函数内部 lambda 的 x 的值吧....所以我对前后两幅图前者加了( n )而后者不加的理解是对的喽,因为前者需要 filter 处理的数是 x 的值而不是 n 的值,n 已经专门赋值了 |
6
ljbha007 2016-08-16 20:38:32 +08:00 1
_not_divisible 返回的是个 lambda 函数
is_odd 返回的是函数运行的结果 |
7
ljbha007 2016-08-16 20:41:04 +08:00
@Newyorkcity 这里用 lambda 的意义是返回一个函数 判断是否能被给定整数整除
比如说 _not_divisible(2)(3)返回 True 表示 3 不能被 2 整除 _not_divisible(3)(6)返回 False 表示 6 能被 3 整除 |
8
Newyorkcity OP @ljbha007
not_divisible 返回的是个布尔值吧,嗷... 你的意思是逻辑上_not_divisible 先返回了 lambda 这个函数 然后 lambda 接受了第二个括号内的内容并返回了最终的布尔值对么? 不过说到最后,如果 filter 的传入函数有两个变量到底该怎么写呢? |