zoukankan      html  css  js  c++  java
  • lambda表达式的变量作用域

    1)lambda表达式等价于一个小函数,表达式的值就是函数的返回值。 
    2)可以给lambda表达式起名字,也可以不起名字。
    3)在lambda表达式中使用没有定义的变量,默认是全局变量。

    这里就进行演示一下为什么lambda上面的定义:

    # -*- coding: utf-8 -*-
    # @Time    : 2018/12/4 17:41
    # @Author  : lh
    # @Email   : 22@qq.com
    # @File    : lambda_test.py
    # @Software: PyCharm
    
    
    
    
    r = []
    for x in range(10):
        r.append(lambda: x**2)
    
    print(r[0](), r[2](), r[5](), r[6](), r[9]())

    你会发现wu无论是r[0](),还是 r[2](), r[5](), 还是r[6](), r[9]()输出都是:81 81 81 81 81

    因为在lambda表达式中使用没有定义的变量,默认是全局变量。

    所以如果你想正常输出0-9的平方的结果还是要在lambda中定义一个变量,这样才是一个局部变量。

    这是示例:

    r = []
    for i in range(10):
        # 定义一个lambda表达式
        r.append(lambda n=i: n**2)
    print(r[0](), r[1](),r[2]())

    这样输出结果才不会是都是一样的。

    从csdn搬家过来的可能没有图片,原地址https://blog.csdn.net/weixin_38091140
  • 相关阅读:
    五种方式获取文件扩展名-转载未验证
    http状态代码-转载
    求两个时间的日期差-部分
    jsp相对路径解决方案
    OAUI前台设计(二)
    jsp生命周期
    OA办公页面设计
    Redis全局命令及数据结构
    Redis集群简介及部署
    sql中 in到底走不走索引
  • 原文地址:https://www.cnblogs.com/Apy-0816/p/11100271.html
Copyright © 2011-2022 走看看