Python中的eval关键字
介绍
在本文中,我们将看到 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 函数。由此,我们将能够避免不必要的陈述。
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!