将kwargs转换为变量?

时间:2017-03-10 05:08:58

标签: python python-3.x scope eval

如何将kwargs对象转换为局部变量? 我是一名数学老师,我想写一个辅助函数,我可以使用JS风格的模板字符串来编写问题。

我想做这样的事情:

TemplateString('{{a*b}} apples are shared among {{a}} children. How many apples do each child get?', {'a': 3, 'b': 5})
//return '15 apples are shared among 3 children...'

我将在字符串中搜索“{{}}”并在其内部调用eval()。但首先我需要将{'a':3,'b':5}转换为局部变量a = 3和b = 5。变量可以是int,float或str。这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:2)

如果您计划使用eval,则根本不需要将其转换为本地人。 eval takes optional globals and/or locals arguments定义该表达式的活动范围变量。如果您提供globals(第二个位置参数)而非locals(第三个),那么globals将重新用作locals,例如:

>>> eval('a * b', {'a': 5, 'b': 3})
15