Python函数定义中`*`符号的含义:warnings.warn文档标记解读
函数定义中
*在warnings.warn里的含义 你已经清楚函数定义里单个*的基础作用,warnings.warn文档里的这个*,本质就是用来强制后续参数必须以关键字参数形式传入的分界线。
拿warnings.warn的实际函数签名举例:
def warn(message, category=None, stacklevel=1, *, source=None): # 函数内部实现
这里的*把参数分成了两部分:
- 前面的
message、category、stacklevel:既可以用位置参数传递,也可以用关键字参数传递 - 后面的
source:只能通过关键字参数传递,比如必须写成warn("警告信息", source=my_source),不能直接用位置参数传值
这么设计的好处:
- 后续给函数新增关键字参数时,不会影响之前用位置参数调用的旧代码,避免兼容性问题
- 让函数调用的意图更明确,一眼就能看出哪些是可选的关键字参数
内容的提问来源于stack exchange,提问作者Mate de Vita
相关产品推荐
相关产品推荐

