#命名空间
内置命名空间
是随着python解释器的启动随之加载到内存中,不需要任何第三方的干扰
是python解释器内置的
全局命名空间
是个人所写的所有代码的变量或者函数
它可以在全局或者局部读取运行
局部命名空间
是个人写在函数内部的代码,只可以在调用这个函数使用
随着这个函数的结束也将从内存中释放掉
命名的变量名字可以是任何(部分不可以)关键字,
例子:def input():
print(‘ssss’)
input()
局部空间找不到的代码会去全局找 全局找不到的会去内置找 内置找不到会报错 然而内置不能去全局或者全局去局部找,更不能跳级找
作用域
全局作用域
它可以调用全局或者内置的函数或者变量
‘global’ #声明全局变量 #:‘globals’查找全局变量 不管把它放在函数内部或者外部都是查找全局变量
局部作用域
它只能调用这个函数本身的函数或者变量
‘nonlocal’ # :它是声明局部变量 ’locals‘ #把它放在某个函数内部才查找某个函数内部所有变量 如果把它放在全局位置则它查找全局变量
’locals‘和’globals‘这俩方法不经常用 需要知道它
例子:
a = 1
b = 2
def func():
x = 'sss'
y = 'fff'
print(locals())
print(globals())
func()
print(locals())
print(globals())
# 作用域:
对于不可变类型如:str int bool complex 的全局类型如果想修改必须加global 而对于可变类型如:dict list set 元祖中嵌套的可变的类型不用加个global 即可直接修改