博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
函数进阶
阅读量:5305 次
发布时间:2019-06-14

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

名称空间

python解析器执行时,每当遇到一个变量的时候,就把变量名和值之间对应的关系记录在内存空间中,这个空间叫全局命名空间

如果遇到函数,只把函数名读入内存,当执行函数时,解析器会在在内存中创建一个临时king见,然后执行函数内部程序,

函数结束时,临时空间消失,开辟的临时的空间叫做局部命名空间

命名空间分为三种:

①全局命名空间

②局部命名空间

③内置命名空间

加载顺序:内置、全局、局部

取值顺序:局部、全局、内置

作用域:

全局作用域:包含内置名称空间、全局名称空间,在任意位置都能被引用,作用于全局

局部作用域:只有函数内部可以调用

globals和locals方法:

name = 'wusir'def func():    name = 'alex'    print(globals())    print(locals())func()#{'__name__': '__main__', '__doc__': None,.................'                      全局#{'name': 'alex'}                                                                 局部

函数嵌套练习:

print(111)def fun2():    print(222)    def fun3():        print(666)    print(444)    fun3()    print(888)print(333)fun2()print(555)输出:1 3 2 4 6 8 5

global关键字,nonlocal关键字:

global()声明一个全局变量,在函数中声明,全局都可以使用(限于数字和字符串)

a = 2def func():    global a    a = 3func() print(a) #在函数内部声明的a 作用于全局,覆盖函数之前的值,如果在函数下面声明 a = 5, 那么输出5#输出:3

   如果为可变数据类型,则不需要加global

l1 = [1,2,3]def func():    l1.append(444)func()print(l1)#输出:[1, 2, 3, 444]

nonlocal:不能修改全局变量

                 在局部作用域中,对父级作用域(或者更外层作用域非全局作用域)的变量进行引用和修改,并且引用的哪层,从那层及以下此变量全部发生改变

a = 1def func():    nonlocal a    a = 2    print(a)func()#报错,因为nonlocal只能在函数中修改他的父级,由于他的父级是全局,所以报错
def func():    name = 'A'                   def inner():        nonlocal name        name = 'B'        print(name)    print(name)    inner()    print(name)           #由于此层级的name已经被 nonlocal 改变了值,所以输出Bfunc()#输出:     A             B           B

 

转载于:https://www.cnblogs.com/pygg/p/8400263.html

你可能感兴趣的文章
属性动画
查看>>
标识符
查看>>
给大家分享一张CSS选择器优选级图谱 !
查看>>
Win7中不能调试windows service
查看>>
通过httplib2 探索的学习的最佳方式
查看>>
快来熟练使用 Mac 编程
查看>>
Node.js 入门:Express + Mongoose 基础使用
查看>>
一步步教你轻松学奇异值分解SVD降维算法
查看>>
使用pager进行分页
查看>>
UVA - 1592 Database
查看>>
Fine Uploader文件上传组件
查看>>
javascript中的传递参数
查看>>
objective-c overview(二)
查看>>
python查询mangodb
查看>>
consonant combination
查看>>
驱动的本质
查看>>
Swift的高级分享 - Swift中的逻辑控制器
查看>>
Swagger简单介绍
查看>>
Python数据分析入门案例
查看>>
vue-devtools 获取到 vuex store 和 Vue 实例的?
查看>>