参数、默认值与调用规则
Python 数据类型、函数与异常处理#Python全栈#第二阶段#Python 数据类型、函数与异常处理#参数、默认值与调用规则约 590 字 · 2 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
位置参数与关键字参数有什么区别?
追问 调用
create_user(name, age) 时,如何让多个含义相近的参数更容易辨认?参数被重复赋值或漏传时,通常会发生什么?
追问
f(1, x=2) 是否有效,需要结合什么函数签名判断?默认参数在什么时候求值?
追问 为什么不能默认认为
time.time() 每次调用时都会重新执行?默认参数使用列表,为什么可能跨调用保留数据?
追问 阅读
def add(item, items=[]): items.append(item); return items 的连续调用结果,如何修复?使用 None 作为默认值时,如何区分“不传”和“明确传入 None”?
追问 业务需要区分两者时,如何使用独立哨兵对象?
*args 与 **kwargs 分别接收什么?
追问 传入后是什么类型?为什么不应通过它们隐藏所有接口约束?
调用时的 *sequence 与 **mapping 如何使用?
追问 解包 Key 不是字符串、参数重复或出现未知参数时会怎样?
仅限关键字参数有什么作用?
追问
def query(name, *, limit=20) 为什么能减少位置传参造成的误用?仅限位置参数如何声明?
追问 函数签名里的
/ 与 * 分别规定什么调用边界?如何设计一个可以稳定扩展的分页函数接口?
追问 页码、每页数量、过滤条件、默认值和参数校验如何安排?
函数语法与调用约束可参考 Python 官方控制流与函数教程,并用合法与非法调用分别验证。