假设我有一个字符串op,可以等于<,>,==,<=或> =.
我想对两个值执行相关的操作.除了下面显示的简单if/else方法之外,还有更多的pythonic方法吗?
def doit(op, val1, val2):
if op == ">":
return val1 > val2
elif op == "<":
return val1 < val2
etc....
Run Code Online (Sandbox Code Playgroud)
你可以使用operator:
import operator
operations = {'>':'gt', '>=':'ge', '<':'lt', '==':'eq', '!=':'ne', '<=':'le'}
def doit(op, *vals):
return getattr(operator, operations[op])(*vals)
Run Code Online (Sandbox Code Playgroud)
使用getattr是调用等效的operator.eq,operator.lt等等,除了要调用的函数的字符串名称传递给getattr.
编辑:更短的解决方案需要从operator以下位置导入特定功能:
from operator import gt, ge, lt, eq, ne, le
operations = {'>':gt, '>=':ge, '<':lt, '==':eq, '!=':ne, '<=':le}
def doit(op, *vals):
return operations[op](*vals)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |