py13.名称空间与作用域

1.名称空间

名称空间就是—> 存放名字和对象映射/绑定关系(内存地址)的地方
​如果你想访问一个变量值,必须要先访问对应的名称空间
例如:
对于x = 3,python会申请内存空间存放对象3,然后将名字x与3的绑定关系存放于名称空间中,del x —> 表示清除该绑定关系

2.名称空间的分类

内置名称空间:存放python解释器自带的名字。
在启动python解释器时就生效,关闭就失效

全局名称空间:文件级别(顶头写的名字)的名字。
在执行文件时生效,在文件结束或者在文件执行期间被删除的就失效

def func():  #func是全局的
	pass

if 10>3:    
	y =333   #y 是全局的


x = 1 
def f1():
	def f2():
		print(x)
	f2()
f1()	

局部名称空间:存放函数内定义的名字(函数的参数以及函数内的名字都存放于局部内存空间)。
在调用当前函数时临时生效,函数体代码执行结束时失效。

加载顺序:内置名称空间 -->>全局名称空间–>>局部名称空间
名称空间的查找顺序:局部名称空间–>>全局名称空间–>>内置名称空间

len = 'global'
def f1():
    # len = 1
    def f2():
        # len = 2
        print(len)
    len = 1
    f2()
f1()

3.作用域

作用域:名称空间发挥作用的范围

4.作用域的分类

1、全局作用域:包含的是内置名称空间与全局名称空间的名字
特点: 只要程序一直执行,永久存活,若程序结束,则销毁

2、局部作用域:包含的是局部名称空间的名字
特点:只能在函数内使用,调用函数时生效,调用结束失效

补充

1、global:声明全局变量
def index():
    global x  #声明X是全局变量
    x=2
    print(x)
index()
print(x)

2、nonlocal:在局部名称空间声明局部变量,在局部修改外部(上层函数)的变量
def index():
    x=1
    def func():
        nonlocal x
        x=2

    func()
    print(x)
index()
3、只有可变类型可在局部修改外部的值

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

琴声浮或沉__听懂只一人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值