作用域和名称空间
Posted yangwenyu-6
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了作用域和名称空间相关的知识,希望对你有一定的参考价值。
名称空间: 用来存放名字(变量, 函数名, 类名, 引入的模块名)的
1. 全局名称空间: 我们在py文件中自己写的变量, 函数.....
2. 内置名称空间: 我们python解释器提供好的一些内置内容(print, input....)
3. 局部名称空间: 在我们执行函数的时候.会产生一个局部名称空间. 放的是: 函数内部的内容(变量, 函数,类...)
名称空间可能会有无数个, 局部名称空间而言. 相对是独立的.一般互不干扰
作用域:
1. 全局作用域: 内置+全局
2. 局部作用域: 局部
globals() 查看全局作用域
locals() 查看当前作用域
# a = 10 # # lst = [1,2,3,4] # # # 内置函数 # print("你好啊,我叫赛利亚") # # def chi(): # a = 10 # b = 20 # # # # 如果不调用chi() chi中的a和b都不会创建 # # 如果调用了chi() 会创建a,b # chi() # def chi(): # a = 10 # print(a) # # chi() # print(a) # 报错 # def print(b): # pass # # a = 10 # def chi(): # print(a) # # chi() # 从全局去找局部 -> 找不到 # 局部去找全局 -> 可以找到 # 怎么查看全局和局部中的内容 # a = 10 # b = 20 # # def 今天又是星期五(): # pass # # # 查看全局作用域中的内容 # print(globals()) # globals 全局作用域: 内置+全局名称空间 # ‘‘‘ # {‘__name__‘: ‘__main__‘, ‘__doc__‘: None, ‘__package__‘: None, # ‘__loader__‘: <_frozen_importlib_external.SourceFileLoader object at 0x000000000265C080>, # ‘__spec__‘: None, ‘__annotations__‘: {}, # ‘__builtins__‘: <module ‘builtins‘ (built-in)>, => print, input open # ‘__file__‘: ‘D:/python_workspace_s18/day10 函数的进阶/04 名称空间和作用域.py‘, # ‘__cached__‘: None, # # 自己写的. 全局 # ‘a‘: 10, ‘b‘: 20, ‘今天又是星期五‘: <function 今天又是星期五 at 0x0000000001D42E18>} # ‘‘‘ # def chi(): a = 20 b = 30 print(locals()) # 查看当前作用域中的内容 print(globals()) # alex,老男孩儿, 武sir, 全局作用域中的内容 chi() # print(locals()) # 全局 # print(globals()) # 全局
以上是关于作用域和名称空间的主要内容,如果未能解决你的问题,请参考以下文章