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)

  

最新文章

  1. SQL 性能调优中可参考的几类Lock Wait
  2. ABP理论学习之Web API控制器(新增)
  3. Qt之布局管理--基本布局
  4. POJ 1149PIGS 网络流 最大流
  5. ML—随机森林·1
  6. 5.9-4用字符串生成器给字符串str追加1~10这10个数字
  7. JSBinding + SharpKit / 实战:转换 Survival Shooter
  8. C# 模拟POST提交文件
  9. 155. Min Stack
  10. 字符设备驱动1:新的方式添加cdev + 在open函数中将文件私有数据指向设备结构体
  11. Log4Net五步走
  12. 5-jQuery - AJAX get()/post()页面请求即执行
  13. Android 文字过长TextView如何自动截断并显示成省略号
  14. coursea机器学习课程作业
  15. Ireport启动错误
  16. Java Service Wrapper 使用
  17. 4.93Python数据类型之(8)集合
  18. hinton教授的本科生课程CSC321-机器学习中的神经网的笔记
  19. 第05章:MongoDB-CRUD操作--数据库
  20. android系列9.LinearLayout学习

热门文章

  1. MySQL内置函数:IP地址点分式与数字转换函数(INET_ATON/INET_NTOA)
  2. 在2d游戏中常用的向量方式
  3. 53. Maximum Subarray@python
  4. 【NOIP提高A组模拟2018.8.14】 区间
  5. 【windows】win7 sp1 系统语言中英文切换
  6. 【mysql】The server quit without updating PID file
  7. centos 7 安装WordPress的参考博文
  8. shutil,zipfile,tarfile模块
  9. Docker容器技术的核心原理
  10. JAVA-基础(六) Java.serialization 序列化