首页 > 其他分享 >名称空间与作用域

名称空间与作用域

时间:2023-01-18 22:33:06浏览次数:38  
标签:name 作用域 查找 名称 空间 全局 def

名称空间与作用域

名称查找顺序

函数名的多种用法

名称空间

"""
name = 'jason'
1.申请内存空间存储jason
2.给jason绑定一个变量名name
3.后续通过变量名name就可以访问到jason
"""
名称空间就是用来储存变量名与数据值绑定关系的地方(我们也可以简单的理解为就是储存变量名的地方)

1.内置名称空间
	解释器运行自动产生 里面包含了很多名字
    	eg:len print input
            
2.全局名称空间
	py文件运行产生 里面存放文件级别的名字
    	name = 'guts'
	
	if name:
        age = 18
        
	while True:
        gender = 'male'

	def index():
        pass
    
    class MyClass(object):
        pass
	name\age\gender\index\MyClass

3.局部名称空间
	函数体代码与性能\类体代码运行  产生的空间

名称空间存活周期及作用范围(域)

存活周期
	内置名称空间
    	Python解释器启动则创建 关闭则销毁
    全局名称空间
    	py文件执行则创建 运行结束则销毁
    局部名称空间
    	函数体代码运行创建 函数体代码结束则销毁(类暂且不考虑)
作用域
	内置名称空间
    	解释器级别的全局有效
    全局名称空间
    	py文件级别的全局有校
    局部名称空间
    	函数体代码内有效

名称的查找顺序

涉及到名字的查找 一定要先搞明白自己在哪个空间
1.当我们在局部名称空间中的时候
	局部名称空间 >>> 全局名称空间 >>> 内置名称空间
2.当我们在全局名称空间中的时候
	全局名称空间 >>> 内置名称空间
ps:其实名字的查找顺序是可以打破的     

查找顺序案例

1.相互独立的局部名称空间默认不能够互相访问
	 def func1():
    	name = 'jason'
    	print(age)

    def func2():
       age = 18
       print(name)
2.局部名称空间嵌套
	先从自己的局部名称空间查找 之后由内而外依次查找
"""
函数体代码中名字的查找顺序在函数定义阶段就已经固定死了
	x = '干饭了'
    def func1():
        x = 1
        def func2():
            x = 2
            def func3():
                x = 3
                print(x)
            func3()
        func2()

    func1()
"""       

标签:name,作用域,查找,名称,空间,全局,def
From: https://www.cnblogs.com/DragonY/p/17060777.html

相关文章