2024-06-07 14:50:58 发布
网友
我试图运行此代码,但似乎exec()没有在函数内执行字符串:
exec()
def abc(xyz): for i in fn_lst: s = 'temp=' + i + '(xyz)' exec(s) print (temp) abc('avdfbafadnf')
我收到的错误:
fn_lst是函数名的列表,即:['has_at', 'has_num' ...]
fn_lst
['has_at', 'has_num' ...]
如果可能的话,请告诉我exec()的替代方案。在
要使传递给exec()的字符串设置的变量在调用之外可用,请使用exec(),如下所示:
exec( a_string, globals(), locals() )
例如
将打印以下结果:
3
注意:在本例中,只使用locals()就足够了,即省略globals()。这两个例子都是为了说明更一般的情况。locals()和/或globals()的使用是一个更大主题的一部分,称为“范围”。您可以在Python Textbook - Scope上阅读更多有关此内容的信息
不要将exec与函数名一起使用,只需将函数对象保留在列表中:
exec
fn_lst = [has_at, has_num, ...]
并直接执行调用:
要使传递给exec()的字符串设置的变量在调用之外可用,请使用exec(),如下所示:
例如
^{pr2}$将打印以下结果:
注意:在本例中,只使用locals()就足够了,即省略globals()。这两个例子都是为了说明更一般的情况。locals()和/或globals()的使用是一个更大主题的一部分,称为“范围”。您可以在Python Textbook - Scope上阅读更多有关此内容的信息
不要将
exec
与函数名一起使用,只需将函数对象保留在列表中:并直接执行调用:
^{pr2}$相关问题 更多 >
编程相关推荐