eval的功能

  将字符串str当成有效的表达式来执行。.

写函数,专门计算图形的面积

其中嵌套函数,计算圆的面积,正方形的面积和长方形的面积

调用函数area(‘圆形’,圆半径)  返回圆的面积

调用函数area(‘正方形’,边长)  返回正方形的面积

调用函数area(‘长方形’,长,宽)  返回长方形的面积

def area():

def 计算长方形面积():

pass

def 计算正方形面积():

pass

def 计算圆形面积():

pass

如果不用eval函数。

  1. import math
  2. def area(x,*args):
  3. def chang(r,l):
  4.  
  5. return r*l
  6. def zheng(r):
  7. return r*r
  8. def yuan(r):
  9. return math.pi*r*r
  10. if x=='圆形':
  11. res=yuan(*args)
  12.  
  13. elif x=='正方形':
  14. res=zheng(*args)
  15. elif x=='长方形':
  16. res=chang(*args)
  17. return res
  18.  
  19. res=area('圆形',5)
  20. print('面积:%s' %res)

  

采用eval。

  1. import math
  2. def area(x,*args):
  3. def chang(r,l):
  4. return r*l
  5. def zheng(r):
  6. return r*r
  7. def yuan(r):
  8. return math.pi*r*r
  9. return eval(x)(*args)
  10. res=area('yuan',5)
  11. print(res)

  

由于eval的弊端,判断是否在local()内优化。

  1. import math
  2. def area(x,*args):
  3. def chang(r,l):
  4. return r*l
  5. def zheng(r):
  6. return r*r
  7. def yuan(r):
  8. return math.pi*r*r
  9. if x in locals(): #判断当前作用域的局部变量
  10. return eval(x)(*args)
  11. res=area('yuan',5)

  

eval()函数的巧用的更多相关文章

  1. JS eval()函数的一些见解

    一.eval是基本使用规则 1 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 2 eval(string) 3 string必需.要计算的字符串,其中含有要计算的 ...

  2. 浅谈JavaScript eval() 函数

    用js的人都应该知道eval()函数吧,虽然该函数用的极少,但它却功能强大,那么问题来了,为什么不常用呢?原因很简单,因为eval()函数是动态的执行其中的字符串,里面有可能是脚本,那么这样的话就有可 ...

  3. [转]javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")

    javascript eval函数解析json数据时为什么 加上圆括号?为什么要 eval这里要添加 “("("+data+")");//”呢?   原因在于: ...

  4. JavaScript的eval函数

    eval() 函数可将字符串转换为代码执行,并返回一个或多个值 函数原型为: 返回值 = eval( codeString ) 函数说明: 如果eval函数在执行时遇到错误,则抛出异常给调用者. 类似 ...

  5. python笔记-调用eval函数出现invalid syntax错误

    本来是想打算使用eval函数对变量进行赋值的,没想到出现了invalid syntax错误.源代码如下 In [2]: eval('a = 1') File "<string>& ...

  6. JavaScript中Eval()函数的作用

    这一周感觉没什么写的,不过在研究dwz源码的时候有一个eval()的方法不是很了解,分享出来一起学习 -->首先来个最简单的理解 eval可以将字符串生成语句执行,和SQL的exec()类似. ...

  7. JavaScript eval() 函数

    定义和用法:eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法:eval(string) 参数 描述 string 必需.要计算的字符串,其中含有要计算的 Java ...

  8. JavaScript中的eval()函数

    和其他很多解释性语言一样,JavaScript同样可以解释运行由JavaScript源代码组成的字符串,并产生一个值.JavaScript通过全局函数eval()来完成这个工作. eval(“1+2” ...

  9. eval 函数的应用 (去除包装在列表外面的引号)

    a="[u'ANDROID-5a9ac5c22ad94e26b2fa24e296787a35', u'0', 0, 0, 0, 1]" 此时的a是一个字符串,目的是要去掉a上面的引 ...

随机推荐

  1. docker-企业级镜像仓库harbor

    Habor是由VMWare公司开源的容器镜像仓库.事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色 ...

  2. java基础—抽象类介绍

    一.抽象类介绍

  3. c++ 用指针操作数组

    #include <iostream> using namespace std; const int Max = 5; double * fill_array(double * first ...

  4. Vue中引入TradingView制作K线图

    **前言: 本文使用的是1.10版本 , 可通过TradingView.version()查看当前版本. 附上开发文档地址:https://zlq4863947.gitbooks.i...** 一.修 ...

  5. Python语言的简介

    ___________________________________________________________我是一条分割线__________________________________ ...

  6. LeetCode(164)Maximum Gap

    题目 Given an unsorted array, find the maximum difference between the successive elements in its sorte ...

  7. LeetCode(292) Nim Game

    题目 You are playing the following Nim Game with your friend: There is a heap of stones on the table, ...

  8. Linux交换分区swap

    一.SWAP 说明 1.1 SWAP 概述 当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用.那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被 ...

  9. .Net Task常见问题

    最近尝试使用一下Task,但是使用过程中因为API的不熟悉碰到了很多问题,不清楚什么时间来调用Task.Start(),具体该怎么使用等等. 如下所描述的Task.Start()方法均为实例方法. 1 ...

  10. javaweb通过接口来实现多个文件压缩和下载(包括单文件下载,多文件批量下载)

    原博客地址:https://blog.csdn.net/weixin_37766296/article/details/80044000 将多个文件压缩并下载下来:(绿色为修改原博客的位置) 注意:需 ...