zoukankan      html  css  js  c++  java
  • 小知识:pyhon的作用域

    http://www.cnblogs.com/wupeiqi/p/5649402.html   

    五句话搞定JavaScript作用域 


    从JavaScript  == pyhon 作用域几乎一致 __ 详解:

    一、“JavaScript中无块级作用域”

    在Java或C#中存在块级作用域,即:大括号也是一个作用域。
        
    在python JavaScript语言中无块级作用域.


    # 作用域
    # python 无块级别作用域。
    # java/c#
    不可以生效。
    if 1==1:
    name='alex'
    print(name) #生效.alex

    for i in range(10):
    name=i
    print(name) #9


    # python 以函数为作用域。
    def func():
    name='alex' #name只在代码块中可以引用。
    func()
    print(name) #不能使用输出,报错。

    二、python JavaScript采用函数作用域

        当执行console.log(xo)时,其寻找顺序为根据作用域链从内到外的优先级寻找,
        如果内层没有就逐步向上找,直到没找到抛出异常。



    四、python JavaScript的作用域链执行前已创建

     python 的作用域在被执行之前已经创建,日后再去执行时只需要按照作用域链去寻找即可。

     

    # 作用域链
    # python
    作用域在执行前已经确定好。在 所在的作用域,往上找

    #例子1
    name='alex'
    def f1():
    print(name)
    def f2():
    name='eric'
    f1()

    f2()
    #执行结果:
    #alex



    例子2

    #原理:但凡是用到了哪个函数,比如f1(),就会从f1()自己的函数往上找。跟你在函数执行放在哪里一点关系都没有。
    name='alex'
    def f1(): #f1所在的作用域,往上找。
    print(name)

    def f2():
    name='eric' #内部作用域
    return f1

    ret
    =f2()
    # print(ret)
    ret()

    #结果
    # <function f1 at 0x0000026C7D81DF28>
    # alex


     

    新浪面试题:


    # 例子3 进阶.

    li=[x+100 for x in range(10) if x >6 ]
    print(li)

    #执行结果:
    # [107, 108, 109]

    # 新浪面试题:
    # lambda 为元素的列表 li=[函数,函数,函数, ]

    li1=[lambda :x for x in range(4)] #li 列表中的元素,【函数,函数,函数】,
    li2=[lambda :1]
    li3
    =[x for x in range(10)]
    print(lambda :9)

    print(li1[0]) #生成一个函数名,并没有执行。

    ret=li1[0]()
    print(ret)

    print(li2[0]())

    print(li3)

    ###########
    print([lambda :9,][0]()) #根据内容——自己进行定义的lambda()执行函数。

    #执行结果:
    # <function <listcomp>.<lambda> at 0x00000263D1CA80D0>
    # 3
    # 1
    # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    # 9





























    GitHub:https://github.com/ju-do-it
    个人博客:https://zhangju.lookdoc.cn
    博客园:https://www.cnblogs.com/zhangju
    Copyright ©2020 Ju-do-it
    【转载文章务必保留出处和署名,谢谢!】
  • 相关阅读:
    Android 系统属性
    免费Gif图片录制工具
    850 USB 烧录模式
    Fusioncharts图表组件API参考方法(Functions)汇总篇(续)
    FusionCharts 分类以及各个属性参数列表
    FusionCharts生成报表应用
    FusionCharts参数大全及详细说明(中文)
    FusionCharts导出图表常见问题(FAQ)汇总---FusionCharts常见问题大全
    FusionCharts生成Flash图表常见问题FAQ
    FusionCharts使用问题及解决方法(五)-FusionCharts常见问题大全
  • 原文地址:https://www.cnblogs.com/zhangju/p/5675251.html
Copyright © 2011-2022 走看看