【问题标题】:Alternative for exec() in pythonpython中exec()的替代方法
【发布时间】:2022-08-23 22:38:04
【问题描述】:

我的 Python 代码存在以下问题:

我正在使用一个包,有两个内置方法,分别称为 methodA 和 methodB。我想使用哪种方法应该取决于一个变量,比如 var=A 或 var=B。我目前有两种方法来实现这一点,它们都相当不雅:

1.

var = \'A\'

if var == \'A\':
    res = methodA()
if var == \'B\':
    res = methodB()
exec(f\"res=method{var}()\")

第一种方法很糟糕,因为在我的情况下有几十种方法,所以我必须定义大量的 if 条件。第二种方法似乎也不对。

有没有解决问题的正确方法?

提前致谢。

  • 使用字典 methods = {\'a\': methodA, \'b\': methodB} methods[var]()

标签: python python-3.x


【解决方案1】:

您可以使用globals() 对象:

def lets_call_this_func_foo(var='A'):
    func = globals()['method' + var.upper()]
    res = func()
    return res

def methodA():
    return 'hey this is func A'

def methodB():
    return 'hello from func B'

print(lets_call_this_func_foo())
print(lets_call_this_func_foo('b'))

出去:

hey this is func A
hello from func B

【讨论】:

    猜你喜欢
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 2013-02-11
    • 2011-11-25
    相关资源
    最近更新 更多