Python中的eval关键字

作者 : 慕源网 本文共1748个字,预计阅读时间需要5分钟 发布时间: 2021-09-30 共541人阅读

介绍

在本文中,我们将看到 eval 的主要用途之一。Eval 是 Python 中可用的内置关键字。它用于解析表达式并执行 Python 脚本或表达式。

我们将在切换器案例中评估关键字用例。

下面是四个函数的示例代码。我们正在使用 switcher.get 进行评估。

def add(a, b):
    print("Add function executed", a+b)
    return a + b


def sub(a, b):
    print("Sub function executed", a - b)
    return a - b


def mul(a, b):
    print("Mul function executed", a * b)
    return a*b


def div(a, b):
    if a==0 or b==0:
        print("Div function executed", 0)
        return 0
    print("Div function executed", a/b)
    return a/b



def perform_math(a, b, func_symbol):

    switcher = {
        '+': add(a, b),
        '-': sub(a, b),
        '*': mul(a, b),
        "/" : div(a, b)
    }

    func = switcher.get(func_symbol, 0)
    print(f"Result found for operation:'{func_symbol}' for values {a} and {b} is", func)

print('-----------------------------------------------------------------------')
print('Normal code execution')
print('-----------------------------------------------------------------------')
perform_math(9, 3, "+")
print('-----------------------------------------------------------------------')

如果我们看到上面的代码,其中包含使用 switcher 的正常代码方式。下面是代码的示例输出

现在,如果我们看到上面的代码输出。即使我们只对添加函数感兴趣,它也执行了所有函数,最后,它为我们提供了所需的结果。它完全按预期工作,但不必要地也执行了另外 3 个功能。 

我们可以避免执行其他函数,使用如下 eval 函数。

def perform_math_with_eval(a, b, func_symbol):

    switcher = {
        '+': 'add(a, b)',
        '-': 'sub(a, b)',
        '*': 'mul(a, b)',
        "/" : 'div(a, b)'
    }

    func = switcher.get(func_symbol, 0)
    print(f"Result found for operation:'{func_symbol}' for values {a} and {b} is", eval(func))


print()
print('-----------------------------------------------------------------------')
print('Code execution with the help of eval')
print('-----------------------------------------------------------------------')
perform_math_with_eval(9, 3, "+")
print('-----------------------------------------------------------------------')

下面是代码的输出,

现在,如果我们观察上述代码的输出,我们会看到代码正在评估所需的函数。它跳过了 3 个函数,只执行了一个函数,就像我们在eval的帮助下获取所需函数后,我们将其视为字符串(而不是函数)一样对待,我们正在评估类似字符串的 Python 函数/表达式/脚本。

概括

我希望您现在了解我们使用 switcher 时的 eval 函数。由此,我们将能够避免不必要的陈述。

 


慕源网 » Python中的eval关键字

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录