zoukankan      html  css  js  c++  java
  • python(一):作用域

    与c相比,python作用域很奇特。

     在Python中变量的作用域是由它在源代码中的位置决定的,这一点与c相似。

    python只支持4种作用域,即局部作用域,全局作用域,内置作用域,嵌套作用域。

    比较下列两段代码:

    >>>x = 10
    >>>def selector():
                print x
    >>>selector()
        

    输出10,由于在函数局部作用域中没有赋值,x向上绑定到全局作用域中的x。

    >>>x = 10
    >>>def selector():
                print x
                x = 11
    >>>selector()

    抛出NameError异常,由于x = 11使得x绑定到局部作用域上,在print x时却没有绑定,因此出现异常。

    不恰当的修正,显示的将x绑定到全局作用域上,采用global关键字

    >>>x = 10
    >>>def selector():
                global x
                print x
                x = 11
    >>>selector()        

    原理性解释:LEGB规则

    L(local)->E(embedded)->G(global)->B(build-in)

    其中,局部作用域指示当前函数的定义范围

    嵌套作用域指示当前函数的外层函数的定义范围

    全局作用域通常只当前模块的范围

    内置作用域通常指内置空间的范围,如__main__等

    虽然python为动态语言,但是变量的作用域在编译期确定,当某个变量在某级作用域中发生赋值过程,则这个变量的作用域便由此确定

  • 相关阅读:
    linux安装memcache及memcache扩展
    jsop
    用户权限集中管理方案
    linux系统优化配置
    APICloud
    laravel中使用mgirations创建和迁移数据库
    无限分类
    laravel中的验证及利用uploadify上传图片
    Laravel框架数据库CURD操作、连贯操作使用方法
    php 将二维数组批量插入到数据库中
  • 原文地址:https://www.cnblogs.com/zjgtan/p/3396907.html
Copyright © 2011-2022 走看看