【发布时间】:2011-09-23 21:09:39
【问题描述】:
(请帮我澄清一下标题)
这是我想做的:
s = "'arg1', 'arg2', foo='bar', baz='qux'"
def m(*args, **kwargs):
return args, kwargs
args, kwargs = m(magic(s))
# args = ['arg1', 'arg2']
# kwargs = {'foo': 'bar', 'baz'='qux'}
magic()的定义是什么?
自己解析字符串是最后的手段,因为它充满了陷阱(如果 arg1 有逗号怎么办?如果 arg2 有引号怎么办?等等)。
【问题讨论】:
-
为什么要这样做?如果
s来自用户,那么任何不那么复杂的方法都将充满安全风险。 -
@Karl
s来自配置文件。该文件的大部分内容根本不是 Pythonic,但我正在构建一些宏处理,这将受益于这种语法。
标签: python metaprogramming eval