函数
函数时第一类对象
1.函数名可以被引用
2.函数名可当作参数去使用
3.函数名可以当作返回值使用
传参时,如果无特殊需求,一定不能加(),否则就当场执行
def index():
print(‘from index’)
def func(a):
return a
a=func(index) a()
执行结果:
from index
4.函数名可以被当作容器类型的元素
def func(): print('from func') l1 = [1, '2', func, func()] f = l1[2] print(f) from func <function func at 0x00000237E4132EA0>
5.函数的嵌套调用
6.函数的嵌套定义
名称空间
存放名字的空间
分类:
要拿到一个变量值,先进入名称空间,拿到变量名,得到与他绑定的关系
1.内置名称空间
python提前给的定义完的名字,存在于内置空间
2.全局名称空间
存放于文件级别的名称就是全局名称空间
if,while,for内部定义的名字执行后,都存放于全局名称空间
3.局部名称空间
def index():
a =1
print(a)
index ()
print(a)报错
生命周期:
1.内置名称空间
在python解释器启动时生效,关闭python解释器的时候失效
2.全局名称空间
当你启动当前这个py文件时侯就开始生效,当前页代码执行结束之后失效
3.局部名称空间
当你调用当前函数时生效,函数代码执行结束时就失效
名称空间查找顺序:
局部:局部》全局》内置
全局:全局》内置 #内置找不到报错
函数内部使用名字,在定义阶段已经规定死了,与你位置无关
作用域:
分类:
全局作用域 全局可以调用的名字,内置名称空间+全局名称空间就存在于全局作用域
局部作用域 局部可以调用局部名称空间
globa 声明全局变量
nonlocal 在局部中声明局部变量
可变类型可以在局部修改上层外部变量的值