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)

  

转载于:https://www.cnblogs.com/654321cc/p/7459866.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值