python - 在 Python 中使用字符串作为不完整的代码位

标签 python metaprogramming eval

(请帮我澄清一下标题)

这就是我想做的:

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 中有引号怎么办?等等)。

最佳答案

按照您的定义定义 sm:

>>> args, kwargs = eval('m(%s)' % s)
>>> args
('arg1', 'arg2')
>>> kwargs
{'foo': 'bar', 'baz': 'qux'}

关于python - 在 Python 中使用字符串作为不完整的代码位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7534891/

相关文章:

r - 解析,用三点参数替换

c++ - 内部类的模板特化

javascript - eval() 带有来自范围内对象的变量

Python-合并两个列表以生成列表列表

在 ubuntu 中安装 Python pip

python - 将 Python 的输入输入到 C++ 程序中

jvm - 为什么 JVM 被认为是如此出色的软件工程?

python - LoadLibrary(pythondll) failed error using py2exe教程

java - 如何使用 "varchars,custom functions,numbers and dates"执行(eval)表达式

java - RserveException : eval failed Syntax error