exec()在函数python3.x中不工作

2024-06-07 14:50:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图运行此代码,但似乎exec()没有在函数内执行字符串:

def abc(xyz):
    for i in fn_lst:
        s = 'temp=' + i + '(xyz)'
        exec(s)
        print (temp)

abc('avdfbafadnf')

我收到的错误:

^{pr2}$

fn_lst是函数名的列表,即:['has_at', 'has_num' ...]

如果可能的话,请告诉我exec()的替代方案。在


Tags: 函数字符串代码infordeftempfn
2条回答

要使传递给exec()的字符串设置的变量在调用之外可用,请使用exec(),如下所示:

exec( a_string, globals(), locals() )

例如

^{pr2}$

将打印以下结果:

3

注意:在本例中,只使用locals()就足够了,即省略globals()。这两个例子都是为了说明更一般的情况。locals()和/或globals()的使用是一个更大主题的一部分,称为“范围”。您可以在Python Textbook - Scope上阅读更多有关此内容的信息

不要将exec与函数名一起使用,只需将函数对象保留在列表中:

fn_lst = [has_at, has_num, ...]

并直接执行调用:

^{pr2}$

相关问题 更多 >

    热门问题