码迷,mamicode.com
首页 > 其他好文 > 详细

函数的作用域

时间:2016-05-13 11:42:34      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

一。 作用域:

       命名空间:保存变量名的地方,变量被赋值的地方决定了这个变量能被访问到的范围

       模块的命名空间是在模块的顶层

       函数的命名空间是独立的,在def时创建,其作用域是由def在代码中的位置决定

二。变量LEGB原则:

      L:Local,函数本地作用域 

      E:Enclosing function local,上一层def或lambda的本地作用域

      G: Globe:全局作用域,模块内

      B: Built-in:内置作用域

      技术分享

三。内置作用域:

       有两种方法可以使用内置函数:

      1.LEGB自动搜索作用域,最终会搜索到Built-in内置作用域,从而可以获取所有的内置变量及函数的使用

      2.通过 import builtins 导入内置模块,才能用内置作用域

       技术分享

       技术分享

        技术分享

四。global语句:

        注意:A。函数外有变量x,函数里给x赋值,即新建变量,如果没有global的声明,就是本地变量,不会影响函数外的

                     变量x的值,这是同名的两个不同的变量,如果有global的声明,按全局变量处理

                 B。函数外有变量x,函数里没有赋值的语句,只有调用x的语句,此时调用的是函数外的x的值,因为本地搜索

                      不到变量x的创建,就调用了外部全局的x变量。

        1.特性:

      技术分享

        2.示例

       技术分享

        3.最小化全局变量:最好别用

        4.最小话文件间修改:模块间调用,最好别调用彼此间的全局变量

        5.其他访问全局变量的方法:

五。       

三。实例:

       1.

      技术分享

      2.

函数的作用域

标签:

原文地址:http://www.cnblogs.com/derekchen/p/5486666.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!