导图社区 Python函数
函数名:其实就是一个符合 Python 语法的标识符,但不建议读者使用 a、b、c 这类简单的标识符作为函数名,函数名最好能够体现出该函数的功能(如上面的 my_len,即表示我们自定义.
社区模板帮助中心,点此进入>>
函数
创建
分类
def
lambda
注意
函数在同一范围内不能重载
函数总是有返回值
未指定时为None
攴持递归调用,但不进行尾递归优化
最大深度sys.getrecursionlimit()
参数
位置
按位置传参
按命名传参
默认值
默认值对象在创建函数时生成,所有调用使用同一对象
若为可变类型,则为静态局部变量
默认参数后,只能有变参
变长参数
*args收集多余的位置参数
展开序列类型或字典的键
**kwargs收集额外的命名参数
展开字典键值对
lambda也支持
作用域
函数形参和内部变量存储在Iocals名字空间
名字查找顺序
LEGB
locals
enclosing function
globals
builtins
关键字
修改globals名字空间
nonlocal
Python3
修改外部嵌套函数名字空问
包装
functools.partial()
堆栈帧
对X86的模拟
获取
sys.getframe(0)
0:当前函数
1:上个函数
inspect.currentframe()
权限管理
上下文
inspect.stack比frame.f_back更方便一些