如何从Python字典提取字符串并作为函数命名参数使用
解决方法
嘿,这个需求用Python的关键字参数解包就能轻松搞定!核心思路是把你字典里指定的参数名转换成对应的关键字参数字典,再传递给函数,这样就只会传入你想要的a、b、c、d,完全不会碰e参数。
具体步骤:
- 先确保你已经定义了
a、b、c、d这些变量(毕竟要给参数赋值嘛):a = 10 b = 20 c = 30 d = 40 - 从你的
mapper字典里取出要使用的参数列表:param_names = mapper['my_func'] - 把参数名和对应的变量值打包成关键字参数字典:
# 用locals()获取当前作用域的变量,如果你在全局作用域就用globals() kwargs = {name: locals()[name] for name in param_names} - 最后用
**操作符解包这个字典,调用函数:functn(**kwargs)
为什么这样有效?
**kwargs会把字典里的键值对转换成key=value形式的命名参数传递给函数。因为你的字典里只有a、b、c、d这四个键,所以函数只会收到这四个参数,e参数会自动使用它的默认值None,完全符合你的要求。
额外提示
如果担心参数名不存在导致报错,可以加个简单的判断,只保留函数接受的参数:
import inspect # 获取函数的参数列表 func_params = inspect.signature(functn).parameters.keys() kwargs = {name: locals()[name] for name in param_names if name in func_params} functn(**kwargs)
这样能避免传入函数不接受的参数(虽然你的场景里不会有,但多一层保障总是好的)。
内容的提问来源于stack exchange,提问作者Aakash Basu




