09 函数的作用域

# # def wahaha(*args):
# # print(args)
# # l = [1,2,3,4,5,9,8,4]
# # wahaha(l)
# #
# # def qqxing(l=[]):
# # l.append(1)
# # print(l)
# # qqxing()
# # qqxing()
# qqxing([11])

# #函数的进阶
# a = 1 #全局变量
# def fune():
# print(a)
# fune()

#命名空间和作用域

#内置命名空间: ----python解释器
# 就是python 解释器一启动就可以使用的名字 存储在内置命名空间中 (print, list, input)
# 内置的名字在启动解释器的时候就被夹在进内存里了

#全局命名空间: ------我们写的代码但不是函数中的代码
#是程序从上到下被执行的过程中依次加载进内存的
#放置了我们设置的所有变量名和函数名

#局部命名空间 : ------函数
#就是函数内部定义的名字
#当调用函数的时候才会产生这个名称空间 随着函数执行的结束,这个命名空间就又消失了

#在局部:可以使用全局和内置命名空间的名字
#在全局: 可以使用内置命名空间中的名字,但是不能使用局部的
#在内置: 不能使用局部和全局的名字

#正常情况下,直接使用内置的名字
# 当我们在局部变量定义了内置命名空间中同名的名字时,会先使用局部的名字
#当我自己由的时候 就用自己的 如果没有就像全局要 全局没有像内置要
#多个函数应该拥有多个独立的局部名字空间 ,不能共享

#作用域 两种
#全局作用域
# ---作用在全局--- 内置和全局名字空间中名字都属于全局作用域 globals() 查看全部的名字
#局部作用域
#--- 作用在局部--- 函数(局部名字空间中的名字属于局部作用域 ) locals() 查看局部所有的名字
#对于不可变数据类型 在局部可是产看全局作用域中的变量
#但是不能直接修改
#如果想要修改,需要在程序的一开始添加 global 函数声明
#如果在一个局部函数内声明了一个 global 变量,那么这个变量在局部的所有操作将对全局的变量有效
# global a locals()查看
a = 1
b = 2
def func():
x = "aaa"
y = "bbb"
print(locals())
print(globals())
func()
print(locals()) #输出什么根据 locals 在什么位置 在全部查看全局的 在局部显示局部的
print(globals()) #永远打印全局的名字
posted @ 2019-07-29 20:13  新时代的潜行者  阅读(110)  评论(0)    收藏  举报