【问题标题】:How to executing function coming as a string in python [closed]如何在python中以字符串形式执行函数[关闭]
【发布时间】:2020-03-12 13:33:29
【问题描述】:
import pandas as pd

df = pd.DataFrame({
    'test2': [1, 2, 3, 4, 5, 6, 7]
})

现在假设我将函数作为字符串。

function_as_string="""
def func_x_2(df):
    for x in df.columns:
        df[x] = [df[x].values]*2
"""

现在我想在上面的 df 上执行这个函数。我该怎么做?

我尝试使用 eval()。但它不起作用。

【问题讨论】:

  • 为什么你的函数代码是字符串?
  • 我会将用户输入作为一个函数执行。这是我正在考虑的解决方案之一,但我也有其他计划。

标签: python-3.x string function


【解决方案1】:

第一

exec('def f1(x): return x*x', globals())

然后你可以调用你的函数

a = globals()['f1'](5)

【讨论】:

  • 技术上正确,但缺少必要的警告:exec危险
  • @brunodesthuilliers 使用execeval 是危险的。但是在这种特殊情况下有什么危险?
  • 危险的部分是它不只是“在这种特殊情况下”使用。 execeval 的全部意义在于评估动态的未知代码。
  • 谢谢。看起来很危险,但现在可以达到我的目的。
猜你喜欢
  • 2014-01-29
  • 1970-01-01
  • 1970-01-01
  • 2020-10-11
  • 2016-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-17
相关资源
最近更新 更多