一、命名空间与作用域

    在命名空间中的名称能将任何python对象作为值,在不同的命名空间中相同的名称可以与不同的对象相关联。但是,如果存在名称解析协议,则多个命名空间可以一起工作来解析名称。也就是说,如果有多个命名空间(总是有的),那么可以定义搜索的顺序,依次在不同的命名空间里来查找某个名称(或确认其不存在于任何认可的命名空间)。在python中,将这一过程定义为作用域。

  1.命名空间包含:

    内置命名空间:

        在文件中函数声明外的的变量都属于命名空间

    全局命名空间:

        函数声明的变量存在的位置属于全局命名空间

    局部命名空间:

        局部命名空间可以是list 、tuple、str、int 等

  2.作用域

    作用域就是字面理解就是作用范围,按照生效范围可分为全局作用域与局部作用域

      全局作用域:

          全局命名空间+内置命名空间

      局部作用域:

          局部命名空间

  

  3.globals()语句

    可以查看全局作用域中的内容

  4.locals()语句

    locals()语句可以在函数的嵌套中使用,目的是查看当前作用域中的内容

  

 a=10
def func():
a= 40
b= 20
def abc():
print("卡洛")
print(a,b)
print(globals())
print(locals())
func()

二、函数的嵌套

  1.函数支持嵌套可以无限嵌套

 a=1
def a_():
global a
a=1
def a1_():
pass
7 a1_()
8 a_()

三、关键字global与nonlocal

    global表示,不再使用局部作用域的内容,而是获取全局作用域中的变量

    nonlocal 表示在局部作用中,调用父级命名空间中的变量

    

python之命名空间与作用域的更多相关文章

  1. Python进阶 - 命名空间与作用域

    Python进阶 - 命名空间与作用域 写在前面 如非特别说明,下文均基于Python3 命名空间与作用于跟名字的绑定相关性很大,可以结合另一篇介绍Python名字.对象及其绑定的文章. 1. 命名空 ...

  2. Python中命名空间与作用域使用总结

    1 引言 命名空间与作用域是程序设计中的基础概念,深入理解有助于理解变量的生命周期,减少代码中的莫名其妙bug.Python的命名空间与作用域与Java.C++等语言有很大差异,若不注意,就可能出现莫 ...

  3. Python的命名空间及作用域

    命名空间的分类 全局命名空间 是在程序从上到下被执行的过程中依次加载进内存的:放置了我们设置的所有变量名和函数名 局部命令空间 就是函数内部定义的名字:当调用函数的时候 才会产生这个名称空间 随着函数 ...

  4. 【Python 函数对象 命名空间与作用域 闭包函数 装饰器 迭代器 内置函数】

    一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(Firs ...

  5. 详解python命名空间和作用域

    1.典型案例 先从几个典型的案例来看下名称空间及作用域对python代码运行的影响,请看下面几个代码实例及其执行结果,是否符合你的预期. 代码1:块作用域 if True: i = 1 print i ...

  6. Python学习日记day10------函数的命名空间、作用域与闭合函数

    1,参数陷阱 如果默认参数的只是一个可变数据类型,那么每一次调用的时候,如果不传值就共用这个数据类型的资源. 2,三元运算 c=a if a>b else b#如果a>b返回a,否则,返回 ...

  7. python命名空间与作用域

    python命名空间与作用域   命名空间是名称与对象之间的关系,可以将命名空间看做是字典,其中的键是名称,值是对象. 命名空间不共享名称. 在命名空间中的名称能将任何python对象作为值,在不同的 ...

  8. python开发函数进阶:命名空间,作用域,函数的本质,闭包,作用域方法(globales)

    一,命名空间 #局部命名空间#全局命名空间#内置命名空间 #三者的顺序#加载顺序       内置命名空间(程序运行前加载)->全局命名空间(程序运行中:从上到下加载)->局部命名空间(程 ...

  9. Python:函数的命名空间、作用域与闭合函数

    1,参数陷阱 如果默认参数的只是一个可变数据类型,那么每一次调用的时候,如果不传值就共用这个数据类型的资源. 2,三元运算 c=a if a>b else b#如果a>b返回a,否则,返回 ...

随机推荐

  1. 【翻译】生成 Timestamps / Watermarks

    本文翻译自flink官网:https://ci.apache.org/projects/flink/flink-docs-release-1.7/dev/event_timestamps_waterm ...

  2. OpenGL程序无法启动此应用程序,因为计算机中丢失glut32.dll(转))

    今天打开一个OpenGL源码,各种修改之后想要运行看一下效果,结果在我的开发环境下出现缺少相应的dll库: Windows7 64位+VS2010 提示:程序无法启动此应用程序,因为计算机中丢失glu ...

  3. 比较两个数组的键名,并返回交集:array_intersect_key

    $a1=array("a"=>"red","b"=>"green","c"=>&q ...

  4. 【docker 镜像源】解决quay.io和gcr.io国内无法访问的问题

    该问题容易导致image pull back off 错误,应当换源: 微软: https://yeasy.gitbooks.io/docker_practice/install/mirror.htm ...

  5. JS验证正数字,正则的一种正数规则1

    JS中有一个验证数字的方法,就是!isNAN.NAN是非数字,!在JS里表示不是的意思,所以这个!isNAN就是判断不是非数字,也就是是数字.验证某个字符串是否是数字格式是:!isNaN(字符串)经过 ...

  6. 解​决​H​T​M​或​H​T​M​L​的​图​标

    HTM和HTML的文件图标不能正常显示,显示为无关联应用程序的白板图标,搞了很久都没能解决,最后综合了几种方法才“搞定”她!出现这种情况的原因可能是安装了某些软件(比如OFFICE.FIREFOX)后 ...

  7. Linux-通过源码安装某个版本的内核

    一下操作步骤来自于各种搜索出来的杂七杂八的东西.主要来自:https://blog.csdn.net/happyfreeangel/article/details/85088706 前置环境:Cent ...

  8. java查询图片显示无图片显示项目默认图片

    /** * 读取图片 * @param request * @param record * @return */ @RequestMapping(params ="method=queryW ...

  9. centos7修改yum源为阿里镜像

    参考博客: https://blog.csdn.net/kxwinxp/article/details/78578492 https://blog.csdn.net/inslow/article/de ...

  10. Linux 环境变量设置的几种方法

    From:http://home.eeworld.com.cn/home.php?mod=space&uid=291513&do=blog&id=40557 环境变量是和She ...