exec()在函数python3.x内部不起作用

安基·马利克(Ankit Malik)

我正在尝试运行此代码,但似乎exec()未在函数内部执行字符串:

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

abc('avdfbafadnf')

我收到的错误:

NameError                                 Traceback (most recent call last)
<ipython-input-23-099995c31c78> in <module>()
----> 1 abc('avdfbafadnf')

<ipython-input-21-80dc547cb34f> in abc(xyz)
      4         s = 'temp=' + i + '(word)'
      5         exec(s)
----> 6         print (temp)

NameError: name 'temp' is not defined

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

exec()在这种情况下,请让我知道替代方法

迪米特里斯·法萨拉基斯·希利亚德

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

fn_lst = [has_at, has_num, ...]

直接执行通话

def abc(xyz):
    for i in fn_lst:
        temp= i(xyz)
        print(temp)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章