pin_drop当前位置:知识文库 ❯ 图文
Python函数可变参数 - **kwargs关键字
一、概述
**kwargs允许函数接收任意数量的关键字参数,这些参数会被收集为一个字典。当不确定调用时会传递哪些关键字参数时,**kwargs非常有用。
二、语法
代码示例
def func(**kwargs):
pass三、基本用法
代码示例
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Alice", age=25, city="Beijing")输出:
代码示例
name: Alice
age: 25
city: Beijing四、kwargs是字典
代码示例
def show_kwargs(**kwargs):
print(type(kwargs))
print(kwargs)
show_kwargs(a=1, b=2, c=3)输出:
代码示例
<class 'dict'>
{'a': 1, 'b': 2, 'c': 3}五、与*args混用
代码示例
def func(*args, **kwargs):
print(f"args: {args}")
print(f"kwargs: {kwargs}")
func(1, 2, 3, name="Alice", age=25)输出:
代码示例
args: (1, 2, 3)
kwargs: {'name': 'Alice', 'age': 25}六、注意事项
注意:**kwargs收集多余的关键字参数为字典。kwargs是约定名称,可以用其他名字。参数顺序:普通参数→*args→**kwargs。只能有一个**kwargs。
七、小结
-
**kwargs收集多余的关键字参数为字典
-
kwargs是约定名称,可以用其他名字
-
参数顺序:普通参数 → *args → **kwargs
-
唯一性:只能有一个**kwargs
八、练习题
练习1
编写函数 create_html_tag(tag, **attrs) 生成HTML标签
练习2
编写函数 log_message(level, **context) 记录日志
常见问题
**kwargs 收集什么类型的参数?
**kwargs 收集所有多余的关键字参数,将它们存储为一个字典对象。
kwargs 这个名字必须固定吗?
不是,kwargs 只是约定俗成的名称,可以使用其他名字,但建议遵循这个约定以提高代码可读性。
可以同时使用 *args 和 **kwargs 吗?
可以,参数顺序必须是:普通参数 → *args → **kwargs。*args 接收位置参数,**kwargs 接收关键字参数。
小贴士
**kwargs 常用于构建灵活的 API 接口,例如数据库查询构建器、配置传递等场景。使用 kwargs.get('key') 可以安全地获取参数值,如果键不存在则返回 None。
本文涉及AI创作
内容由AI创作,请仔细甄别