Python函数--命名空间,作用域

目录

一、命名空间

1.命名空间的本质

2.命名空间的种类

3.访问命名空间中的内容

4.命名空间的加载顺序

5.命名空间的查找顺序

二、作用域

1.作用域指的是:

2.根据变量声明的位置不同,作用域可以分为4类:

3.变量的搜索顺序

三、全局变量和局部变量

四、global和nonlocal关键字

1.glocal关键字

2.nonlocal关键字

五、命名空间与作用域的关系


一、命名空间

1.命名空间的本质

Python的命名空间的本质是一个字典,用来记录变量名称和值。

2.命名空间的种类

局部命名空间记录的是参数以及在函数体中声明的变量名和值
全局命名空间记录的是整个py文件中的变量和函数
内置命名空间

记录的是内置函数

eg:print()   id()   ....................

 

注意:func()得本质就是内存地址调用方法

            函数名本质就是内存地址

3.访问命名空间中的内容

locals()使用locals()内置函数来查看局部命名空间中的内容
globals()使用globals()内置函数来查看全局命名空间中的内容

**注意事项:

如果locals()没有在函数体中,而是在py文件中,打印出来的内容和glocals()打印出来的内容相同

'''

1.使用locals()内置函数来查看局部命名空间种的内容
2.使用globals()内置函数来查看全局命名空间中的内容
注意:
如果locals()没有在函数体中,而是在py文件中,
打印出来的内容和globals()相同
'''
d = 30


def func(c):
    a = 10
    b = 20
    print(locals())  # {'b': 20, 'a': 10, 'c': 30}


func(30)
print(globals())
print(locals())

# {'__name__': '__main__', '__doc__': '\n\n1.使用locals()内置函数来查看局部命名空间种的内容\n2.使用globals()内置函数来查看全局命名空间中的内容\n注意:\n如果locals()没有在函数体中,而是在py文件中,\n打印出来的内容和globals()相同\n', '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000000001DBD0B8>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:/python/day09/demo02_访问命名空间中的内容.py', '__cached__': None, 'd': 30, 'func': <function func at 0x0000000001E2F730>}

4.命名空间的加载顺序

内置命名空间>全局命名空间>局部命名空间

5.命名空间的查找顺序

(1)局部命名空间------>全局聚命名空间---->内置命名空间

(2)如果一开始就是从全局命名空间中查找------->全局命名空间------->内置命名空间

找到就返回内容,找不到就报错

注意:自己的变量名不要和内置的函数名相同,否则无法使用命名空间中的内容


二、作用域

1.作用域指的是:

变量的可用范围

2.根据变量声明的位置不同,作用域可以分为4类:

局部作用域函数体中声明的变量
嵌套作用域嵌套函数中外层函数体中声明的变量
全局作用域py文件中声明的变量
内置作用域Python提供的变量或函数

3.变量的搜索顺序

先从当前作用域开始,如果找到则停止搜索,如果找不到就往上一层作用域中查找

以此类推,如果找不到就报错


三、全局变量和局部变量

全局变量

不可变数据类型

int  float   str   tuple...............

函数无法修改全局变量的值

可变类型数据类型

list   dict    set..............

函数可以修改全局变量的值


四、global和nonlocal关键字

glocal可以将局部变量变成一个全局变量
nonlocal可以修改外层(非全局)变量

1.glocal关键字

2.nonlocal关键字


五、命名空间与作用域的关系

命名空间定义了在某个作用域内的变量名和绑定值之间的对应关系
作用域定义了命名空间中的变量能够在多大的范围内起作用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值