【问题标题】:How to create a function from string (Python3) [closed]如何从字符串创建函数(Python3)[关闭]
【发布时间】:2018-05-09 14:11:41
【问题描述】:

大家好。

我的程序会以特定格式接收stdin 的命令,例如:

"define f1 3 + 5"

通过获取这个命令,我的程序应该创建一个名为“f1”的函数,它将返回动作“3+5”。

我该如何实现?

【问题讨论】:

  • 听起来你正在尝试写一个解析器,你应该能够在网上找到很多用python编写的解析器的例子。到目前为止你有没有尝试过?
  • 欢迎来到 SO。请花时间阅读How to Ask 以及该页面上的其他链接。
  • 你试过python -i吗?

标签: python string python-3.x input


【解决方案1】:

您应该使用字典来存储具有给定名称的函数。一般来说,您不应该从字符串创建函数名。

您可以使用ast.literal_eval 安全地评估作为字符串提供的计算。

这是一个例子:

from ast import literal_eval

mystr = input('Enter a calculation:\n')
# 'define f1 3 + 5'

_, name, calc = mystr.split(None, 2)

d = {name: literal_eval(calc)}

print(d['f1'])  # 8

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 2014-03-28
    • 2013-05-13
    • 2023-04-09
    • 2023-03-20
    • 2012-01-13
    相关资源
    最近更新 更多