十六、命名空间和作用域

命名空间的分类

1、内置的命名空间:python解释器中的,如print(),input()等
2、全局命名空间:是在程序从上到下被执行过程中依次加载进内存的,放置了我们设置的所有变量名和函数名
3、局部命名空间:就是函数内部定义的名字。当调用函数时才会产生
这个命名空间,随着函数执行的结束,这个命名空间就又消失了

各个命名空间中之间的关系

1、在局部,可以使用全局、内置命名空间中的名字
2、在全局,可以使用内置、全局的命名空间中的名字,不能使用局部。
3、在内置的命名空间里面,不能使用局部和全局的命名空间的名字。
附: 依赖倒置原则指的是上层模块应该依赖下层(底层)模块,而不能反向依赖

python中变量的搜索顺序

1、当我们在全局定义了和内置名字空间中同名的名字时,会使用全局的名字,如果没定义,则使用内置的名字。
2、当本级程序有变量的时候,那么将不会在往父级查看(调用父级同名元素),如果内置空间也不存在这个名字,则会报错。

函数调用方法及函数名的含义和命名空间与函数个数的关系

1、函数名():函数的调用,也可以说函数的内存地址加括号()。
2、函数名:代表函数的内存地址。
3、多个函数应拥有多个独立的名字空间。

作用域

python中的作用域和其他语言一样,分为全局作用域和局部作用域,各个作用域的简介如下:
1、全局作用域

  1. 作用在全局(内置/全局命名空间中的名字都属于此)
  2. 使用globals()可以查看全局作用域中的所有变量的名字

实例: 查看全局作用域中所有变量的名字
在这里插入图片描述
从中可以看出,里面有很多的内置变量。
2、局部作用域

  1. 作用在局部(作用在局部命名空间中的名字属于局部作用域)
  2. 使用locals()方法查看局部作用域的所有变量,将会返回以字典形式返回。如果将此方法放在全局位置,则返回结果与globals()方法返回值相同。
  3. 对于不可变的数据类型,在局部可以查看全局作用域中的变量,
    但是不能直接修改此变量,如果想要修改,需要在程序一开始添
    加global声明。实例(将全局变量num的值改为10) 如下:
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值