函数_命名空间和作用域

#函数进阶----命名空间和作用域

# a = 1
# def func():
# print(a)
# func() 调用是可以的

# def func():
# a = 1
#
# func()
# print(a) 不可以的

#命名空间和作用域
# print()
# input()
# list
# tuple
#命名空间有三种
# 内置的命名空间--------->python解释器
#就是python解释器一启动就可以使用的名字存储在内置命名空间中
#内置的名字在启动解释器的时候被加载到内存里

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

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

#在局部:可以使用全局,可以使用内置命名空间
#在全局:可以使用内置命名空间,不能使用局部(使用结束了,内存消失)
#在内置:不能使用全局和局部的,因为没有读到

# def func():
# a = 1
#
# func()
# print(a)

# def input():
# print("you are lovely")
#
# input()

# def max():
# print('有啊')


# print(max([1,2,3]))
#在正常情况下,我们使用全局的名字
#我们在全局定义了和内置空间中使用相同的名字,会使用全局的名字
#当我们自己有的时候,就用自己的.
# 如果自己没有,就找s上一级要.,上一级没有再找上一级,如果到内置没有的话就报错.(内置--->全局--->局部)
# 使用的时候(局部---->全部--->内置)

# def input():
# print("up")
#
# def func():
# input()
# func()
#可以 打印出来是 up

# def func():
# print("123")

# func ----->函数名指向函数地址
# 函数名()--->函数的调用
# 函数的内存地址()--->函数的调用
# print(if(func))
#
# def func1():
# a = 1
#
# def func2():
# print(a)
# 这个是不对的,没有办法调用,各个局部函数内容是独立的

#作用域有两种
#全局作用域-------作用在全局-----内置和全局
#局部作用域-------作用在局部-----函数

# a = 1
# def func():
#
# a += 1
#
# print(a)

# 对于不可变数据类型,在局部可以查看全局变量
# 但是不能修改
# 但是global可以修改全局变量

# a = 1
# def func():
# global a
# a += 1
# print(a)
# func()
# print(a)

# a = 1
# b = 2
# def func():
# x = "aaa"
# y = "bbb"
# print(locals())
#
#
# # func()
# print(globals())

# 也可以传参和返回值得到相应的结果

猜你喜欢

转载自www.cnblogs.com/jly1/p/9576322.html