零基础学python-18.8 嵌套lambda与作用域

这一章节我们来讨论一下嵌套lambda与作用域

我们在前面的章节已经涉及到一些作用域与lambda表达式,例如:

>>> def test(N):
	return lambda x:x*N

>>> func=test(2)
>>> func(2)
4
>>> 


上面的代码就是lambda表达获取test的参数N,即便test已经不是激活状态

我们下面将使用纯lambda表达式模拟上面的代码:

>>> y=lambda N:(lambda x:N*x)
>>> func=y(2)
>>> func(2)
4
>>> func(3)
6
>>> 


如果我们再精简一下,得出下面的代码:

>>> (lambda N:(lambda x:N*x))(2)(2)
4
>>> (lambda N:(lambda x:N*x))(2)(3)
6
>>> 


虽然代码足够的精简,但是如果不是很懂lambda表达式的程序员维护上面的代码,将会花费非常多的时间

因此,对于初学者或者没有函数式编程背景的程序员,笔者不建议使用lambda表达式,更加不建议使用嵌套lambda表达式,因为实在是看不懂

还有,lambda表达式是潜逃作用域的最大受益者。通过上面的代码可以看见,除了嵌套def之外,lambda也可以具备取得上一层def参数的特性。

总结:这一章节只是简单说明一下嵌套lambda与作用域,还有建议初学者不使用它们,还是老老实实的写多两个函数,这样代码结构更加清晰可维护

这一章节就说到这里,谢谢大家

------------------------------------------------------------------

点击跳转零基础学python-目录

版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值