通过operator函数将字符串转换回运算符

需求

由于某些需要,将一些运算符做了列表,以便后续的程序判断传入的字符串中是否包含该列表中的某一个运算符,如果包含,就用该运算符做运算.
但该运算符已经转换是字符串了,没有办法做运算符用,经过全网搜索,发现operator函数可以实现本功能

原始代码

代码

#代码
condition='age > 20'
cond_info=['>','<','=']
for n in cond_info:
	if n in condition:
		print('ok',n,type(n))
		if 30 n 20:
			print('okkk')

输出:
运行结果
提示n 是错误的语法,应为这里的n是字符串,不是运算符

改良代码

代码

condition = 'age > 20'
import operator

cond_info = {'>': operator.gt, '<': operator.lt, '=': operator.eq}
for n in cond_info:
    if n in condition:
        print('ok',n,type(n))
        if cond_info[n](30, 20):
            print('okkk')

输出

ok > <class 'str'>
okkk
posted @ 2019-01-14 17:24  noah-罗  阅读(656)  评论(0编辑  收藏  举报