首页 > 解决方案 > 将选定的参数从字典传递给函数

问题描述

给定一组签名不同的函数和一个包含每个所需参数的 (key, value) 对的字典,我想找到一种优雅的方式将字典传递给每个函数,以便每个函数都可以使用它需要的函数的参数。

def first_function(name, age):
    print(name, " ", age)

def second_function(name, gender):
    print(name, " ", gender)

param_dict = {'name': 'Max', 'age': 23, 'gender':'m'}

param_dict通过指定将传递给函数second_function(**param_dict)会引发错误,因为这两个函数都不需要所有三个参数。是否有一个优雅的解决方案,使得每个函数都“提取”它需要的参数?

标签: pythonfunctiondictionary

解决方案


你可以简单地**kwargs作为第三个参数传递来解决这个问题,因为它会从字典中消耗它需要的东西,其余的将继续收集在kwargs字典中:

def first_function(name, age, **kwargs):
    print(name, age)

def second_function(name, gender, **kwargs):
    print(name, gender)

param_dict = {'name': 'Max', 'age': 23, 'gender':'m'}

first_function(**param_dict)
# Max 23

second_function(**param_dict)
# Max m

推荐阅读