zoukankan      html  css  js  c++  java
  • 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)
    

      

  • 相关阅读:
    装饰者模式和适配器模式
    java 中获得 资源文件方法
    在windows 上统计git 代码量
    Linux-静态库生成
    Redis-Redi事务注意事项
    Linux-使用 yum 升级 gcc 到 4.8
    Linux-配置虚拟IP
    PHP-PSR-[0-4]代码规范
    Linux-/etc/rc.local 或 service 中使用 sudo -u xxx cmd 执行失败(sorry, you must have a tty to run sudo)解决办法
    Linux-系统负载
  • 原文地址:https://www.cnblogs.com/654321cc/p/7459866.html
Copyright © 2011-2022 走看看