【python: 解包】
for user in initial_users:
add_user(*user)
这种写法其实是 Python 的“参数解包”语法。
下面详细解释一下:
1. 语法说明
假设 initial_users 是一个列表,里面每个元素都是一个元组,例如:
initial_users = [
("张三", 18, "男"),
("李四", 22, "女"),
]
而 add_user 的定义可能是:
def add_user(name, age, gender):
# ...
那么:
for user in initial_users:
add_user(*user)
等价于:
add_user(user[0], user[1], user[2])
也就是说,*user 会把元组里的每个元素依次作为参数传给 add_user。
2. 为什么要这样写?
- 简洁:不用手动写
user[0], user[1], ...,代码更简短。 - 灵活:如果参数个数变了,只要元组和函数参数数量一致,不用改循环体。
3. 适用场景
- 当你有一组参数已经打包成元组或列表,且函数参数顺序和数量一致时,用
*解包最方便。 - 如果是字典,可以用
**解包(关键字参数)。
4. 你可以不用 * 吗?
可以,但写法会更啰嗦:
for user in initial_users:
add_user(user[0], user[1], user[2])
如果参数多,这样写就不优雅了。
5. 总结
*user是 Python 的标准参数解包语法,常用于这种批量传参场景。- 只要保证元组和函数参数一一对应,就是安全且推荐的写法。
如果你想了解更多关于参数解包的高级用法,或者有其他写法疑问,随时可以问我!

浙公网安备 33010602011771号