最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 如何快速掌握Python函数的作用域?

    正文概述    2020-10-07   228

    之前小编跟大家在文章内提过关于作用域,部分小伙伴要求小编在详细讲解这方面的内容,于是小编不负众望,搜罗了超级多的内容,希望给大家制作一个非常深刻,便于理解的内容,下面小编就着重针对这部分,给大家整理了以下步骤。关于作用域

    Python的作用域可以分为四种:

    L (Local) 局部作用域

    E (Enclosing) 闭包函数外的函数中

    G (Global) 全局作用域

    B (Built-in) 内建作用域

    影响变量/函数作用范围的有

    函数:def 或 lambda

    类:class

    关键字:global noglobal

    文件:*py

    推导式:[],{},()等,仅限Py3.x中,Py2.x会出现变量泄露。

    1、赋值在前,引用在后

    # ------同作用域内------
    name = "MING"
    print(name)
     
    # ------不同作用域内------
    name = "MING"
    def main():
    print(name)

    2、引用在前,赋值在后(同一作用域内)

    print(name)
    name = "MING"
    # UnboundLocalError: local variable 'name' referenced before assignment

    3、赋值在低层,引用在高层

    # L -> E -> G -> B
    # 从左到右,由低层到高层
    def main():
        name = "MING"
    print(name)
    # NameError: name 'name' is not defined

    关于改变作用域

    变量的作用域,与其定义(或赋值)的位置有关,但不是绝对相关。因为我们可以在某种程度上去改变向上的作用范围。

    关键字:global将 局部变量 变为全局变量

    关键字:nonlocal可以在闭包函数中,引用并使用闭包外部函数的变量(非全局的噢)

    global好理解,这里只讲下nonlocal。

    先来看个例子

    def deco():
        age = 10
        def wrapper():
            age += 1
        return wrapper
     
    deco()()

    运行一下,会报错:

    # UnboundLocalError: local variable 'age' referenced before assignment

    但是这样就OK

    def deco():
        age = 10
        def wrapper():
            nonlocal age
            age += 1
        return wrapper
     
    deco()()
    # 输出:11

    其实,你如果不使用 +=、-=等一类的操作,不加nonlocal也没有关系。这就展示了闭包的特性。

    def deco():
        age = 10
        def wrapper():
            print(age)
        return wrapper
     
    deco()()
    # 输出:10

    以上是关于python作用域内容整合集锦,大家可以了解下哦~另外,作用域在大家的项目实践里,是经常能遇到的事情,因此,掌握好作用域也至关重要,多看两遍以上内容,很容易就掌握住了。


    起源地下载网 » 如何快速掌握Python函数的作用域?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元