zoukankan      html  css  js  c++  java
  • 零基础学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-目录

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

  • 相关阅读:
    0509操作系统
    0508数据结构
    计算机组成原理
    0510数据库--基础知识
    0508操作系统
    0507数据结构
    0506操作系统和数据结构
    机试题201702x--不定长数组的输入
    机试题201805--输入n个字符串,将其反转输出
    SSH框架--Hibernate配置
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4896723.html
Copyright © 2011-2022 走看看