zoukankan      html  css  js  c++  java
  • python作用域和js作用域的比较

    1、python和js一样,作用域链在执行方法之前就已经创建了

    # 下面的执行结果就是aa,原因是这点python和js一样,作用域链已经创建了,不会去改变
    xo="aa"
    def f1():
        print(xo)
    
    def f2():
        xo="xxoo"
        f1()
    f2()

    2、python里面嵌套函数问题

    #结果li列表里面是f1,li[0]=9
    #原因并没有调用f1函数,所以里面的内容不执行,所以外面的执行完毕之后最后一个是9
    li=[]
    for i in range(10):
        def f1():
            return i
        li.append(f1)
    print(li)
    print(li[0]())
    执行结果,第一个执行结果是10个f1内存地址
    第二个都是9

    3、关于lambda作用域问题

    # 下面的意思是,如果循环里面的x大于5,就放入x+10,放入到li中
    """
    li=[x+10 for x in range(9) if x>5]
    print(li)
    """
    # 这里的返回值是x,就是在for循环中创建了x,并且执行完毕之后return x,所以
    # 这里的li中的每一项值都是一样的,8
    li=[lambda :x for x in range(9)]
    print(li)
    print(li[0])
    print(li[0]())
    
    
    #下面的这个lambda就是上面的例子
    li=[]
    for i in range(10):
        li.append(lambda:i)
    print(li)
    print(li[0]())
  • 相关阅读:
    Cygwin配置总结
    javap 指令集
    超好用的Vim配置
    超过 130 个你需要了解的 vim 命令
    21、面向对象
    20、MySQLdb
    深入java字符串原理及其效率分析
    数据库执行计划
    SQL中EXISTS的用法
    mybatis之foreach用法
  • 原文地址:https://www.cnblogs.com/pyrene/p/6621943.html
Copyright © 2011-2022 走看看