eval()函数的巧用
eval的功能
将字符串str当成有效的表达式来执行。.
写函数,专门计算图形的面积
其中嵌套函数,计算圆的面积,正方形的面积和长方形的面积
调用函数area(‘圆形’,圆半径) 返回圆的面积
调用函数area(‘正方形’,边长) 返回正方形的面积
调用函数area(‘长方形’,长,宽) 返回长方形的面积
def area():
def 计算长方形面积():
pass
def 计算正方形面积():
pass
def 计算圆形面积():
pass
如果不用eval函数。
import math def area(x,*args): def chang(r,l): return r*l def zheng(r): return r*r def yuan(r): return math.pi*r*r if x=='圆形': res=yuan(*args) elif x=='正方形': res=zheng(*args) elif x=='长方形': res=chang(*args) return res res=area('圆形',5) print('面积:%s' %res)
采用eval。
import math def area(x,*args): def chang(r,l): return r*l def zheng(r): return r*r def yuan(r): return math.pi*r*r return eval(x)(*args) res=area('yuan',5) print(res)
由于eval的弊端,判断是否在local()内优化。
import math def area(x,*args): def chang(r,l): return r*l def zheng(r): return r*r def yuan(r): return math.pi*r*r if x in locals(): #判断当前作用域的局部变量 return eval(x)(*args) res=area('yuan',5)