#函数进阶----命名空间和作用域 # 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()) # 也可以传参和返回值得到相应的结果
原文地址:https://www.cnblogs.com/jly1/p/9576322.html
时间: 2024-10-10 10:14:08