11.11函数对象,名称空间,作用域,命名关键字参数
函数对象
函数是一个对象
函数名可以被引用
函数名可以当做一个参数进行传参
函数名也可以当成返回值,但是不能加括号,不然会直接调用函数
函数名可以当做容器类的元素
函数的嵌套
就是函数内部定义或调用函数
例
def x():
print('x')
def y():
print('y')
y()
x()
名称空间
内置名称空间
python解释器自带的名称空间,开机就有了
全局名称空间
打开python解释器后就形成的名称空间,
局部名称空间
函数内部的名称空间
查找顺序
先从局部查找,在查找全局,在查找内置,没有就报错
作用域
全局作用域
除了局部就是全局
局部作用域
函数内部的都叫做局部作用域
全局的数据和局部是不互通的,但是可变数据类型可以打破这个规则
global:可以让局部变量变为全局变量
nonlocal:可以让外局部变量变为内局部变量
命名关键字参数
定义在位置形参与关键字形参之间
给命名关键字参数传值时候一定要以关键字形式传值
关键字参数一定不能在位置参数前面