def 定义,调用才执行
def 名字(形参): 定义函数,缩进部分是函数体,定义时并不运行。return 把值交还给调用者并结束函数;没有 return 就返回 None。return a, b 返回元组。
函数内部赋值的变量是局部变量,函数外看不到。函数本身也是对象,可以赋值、传递。
选一个预设示例:看每个实参按位置或名字落进哪个形参,多出来的被 *args / **kwargs 收走,
以及 sorted(…, key=lambda …) 怎样先算出每个元素的 key 再排序。
前排是调用时传入的实参,下方小字标明“位置”或“关键字”;后排是函数定义的形参,下方小字是形参名和默认值。多出来的位置实参被右侧滑块送进 *args 托盘(元组,封条表示不可变),多出来的关键字实参进 **kwargs 托盘(字典)。竖旗落下表示调用出错。右前方显示屏给出返回值。排序示例中,前排下方小字是每个元素的 key 值,后排是排好序的结果。
准备def 名字(形参): 定义函数,缩进部分是函数体,定义时并不运行。return 把值交还给调用者并结束函数;没有 return 就返回 None。return a, b 返回元组。
函数内部赋值的变量是局部变量,函数外看不到。函数本身也是对象,可以赋值、传递。
调用时位置实参按顺序对应,关键字实参 名=值 按名字对应,位置实参必须写在关键字实参前面。exp=2 是默认值,不传就用它。*args 收集多余位置实参成元组,**kwargs 收集多余关键字实参成字典。
单独的 * 后面是仅关键字参数,/ 前面是仅位置参数。调用时 *列表、**字典 可以拆包。默认值不要用列表等可变对象。
lambda 参数: 表达式 是只有一个表达式的匿名函数,自动返回表达式的值,常直接写在需要函数的地方。
sorted(数据, key=函数, reverse=False):先对每个元素调用 key 得到比较值,再按比较值排序,元素本身不变;key 相同时保持原顺序(稳定排序)。key 返回元组可以多条件排序。list.sort() 原地排序并返回 None,sorted() 返回新列表。