博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
名称空间和作用域
阅读量:5240 次
发布时间:2019-06-14

本文共 935 字,大约阅读时间需要 3 分钟。

名称空间相关:

1.名称空间Namespaces:指的是存放名字和值的内存地址绑定关系的的地方(内存空间)

2.名称空间可以被分为三大类:

  内置名称空间:存放Python解释器自带的名字

    产生:Python解释器启动的时候则产生

    销毁:Python解释器结束运行销毁

  全局名称空间:在文件内定格定义的变量和函数名(包含流程控制和定格定定义的函数名)

    产生:执行Python程序时产生

    销毁:Python程序执行完成时结束

  局部名称空间:函数内部定义的名字的空间

    产生:调用函数时产生

    销毁:函数调用结束时结束

三种名称空间的产生的先后顺序:内置名称空间---》全局名称空间---》局部名称空间

查找名字的顺序:当前顺序往外一层层的寻找

  如果当前在局部空间:局部--》全局--》内置

  如果在全局名称空间:全局--》内置

x=0#全局def f1():    # x=1#f1局部名称    def f2():        # x=2#f1下的f2局部名称空间        def f3():            # x=3#f1下的f2下f3的局部内存空间            print(x)        f3()    f2()f1()

 

 


 

作用域:指的是作用的范围

  全局作用域:包含内置与全局名称空间的名称

    特点:全局存活,全局有效

  局部作用域:包含局部名称空间的名字

    特点:临时存活,局部有效

重点:

  作用域关系是在函数定义阶段就已经固定死了,与调用位置无关。

范例一:

def f1():    print(xxx)#定义函数处开始寻找,再一层一层向外查找xxx=111def f2():    xxx=222    f1()#与调用的位置无关f2()#111

范例二:

xxx=111def f1():    print(xxx)    # xxx=222#当要调用同级名称,先定义在使用,这样会报错    yyy=222    print(yyy)f1()

 

转载于:https://www.cnblogs.com/msj513/p/9707458.html

你可能感兴趣的文章
PyCharm设置
查看>>
MySQL服务器与MySQL57服务器区别与不同处在哪里,他们各自的领域范围,能不能同时启动服务?...
查看>>
type="button"和type="submit"的区别
查看>>
欢迎来的我的前端技术博客
查看>>
DB2同平台迁移数据库
查看>>
sql编程
查看>>
kubernetes实战(四):k8s持久化安装rabbitmq集群
查看>>
SQL优化SQL tuning
查看>>
微信小程序——获取openid
查看>>
数据导入导出、备份恢复
查看>>
毕业设计10-21星期六
查看>>
$.ajax
查看>>
Redhat PXE服务器配置-待验证
查看>>
Java Exception 和Error
查看>>
python库学习笔记(re库)
查看>>
Spring多数据源的配置和使用
查看>>
算法总结之 删除链表的中间节点和a/b处的节点(链表中间节点的重要思想)
查看>>
1.类的两种创建方式(通过元类创建类)
查看>>
使用promisify来流程化异步操作
查看>>
采用CAS原理构建单点登录
查看>>