当前位置: 首页 > news >正文

地方门户网站建设方案百度发作品入口在哪里

地方门户网站建设方案,百度发作品入口在哪里,做暧免费观看网站,书法网站建站目标对于中级Python开发者来说,了解了Python的基础语法、库、方法,能够实现一些功能之后,进一步追求的就应该是写出优雅的代码了。 这里介绍一个很有趣的概念“柯里化”。 所谓柯里化(Currying)是把接受多个参数的函数变换…

对于中级Python开发者来说,了解了Python的基础语法、库、方法,能够实现一些功能之后,进一步追求的就应该是写出优雅的代码了。 这里介绍一个很有趣的概念“柯里化”。

所谓柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。这个技术由 Christopher Strachey 以逻辑学家 Haskell Curry 命名的,尽管它是 Moses Schnfinkel 和 Gottlob Frege 发明的。
引自 百度百科

这里我们举一个例子:我们在初中的时候都学过自由落体,在不考虑风阻的情况下,物体在一定高度下落的时间是一定的。 计算公式是:时间 = 开平方(2 * 高度 / 重力加速度)

如果我们要用python实现这个函数

def fall_time(height)return math.sqrt(2 * height * 9.8)

但是实际上, 重力加速度G的值是随着纬度不同发生变化的。 我们中学的时候只是取了一个近似值。实际上当要求计算精度的时候, 赤道上应该是9.78,南北极是9.832。这中间可是差着0.5呢。

此时,我们有些同学觉得,这个简单,两个参数不就行了?于是就出现了如下方法:

def fall_time_with_ga(height, ga):return math.sqrt(2 * height * ga)

这样做虽然没问题, 但是写代码的时候参数太多了。 一旦你要计算多个数值的时候,就会出现如下的代码:

print(fall_time_with_ga(100, 9.80122))
print(fall_time_with_ga(200, 9.80122))
print(fall_time_with_ga(300, 9.80122))

还记得我们为什么学Python么?Python的重要特性之一就是优雅干净。为此田辛老师希望柯里化这个函数,降低函数的参数数量,这时候我们用到的内部函数的办法:

def fall_time_setup(ga:float):def fall_time(height:float):return math.sqrt(2 * height * ga)return fall_time

对于这个函数,相对来说调用的时候就简单多了。

beijing = fall_time_setup(9.80122)  # 首先设定重力加速度的值, 真正计算的时候只关心高度即可
print(beijing(100))
print(beijing(200))
print(beijing(300))

这样调用起来,思路就清晰多了。

那有些同学可能会说, 调用思路清晰了。 可是函数本身复杂了呀。 整个函数本来两行的,现在四行了,不优雅!!!

这里田辛老师就要说,用后一种方法函数体写成两行也没问题。

仔细观察改造后的这个函数。 fall_time这个内部函数的函数名是不是在调用的时候自始至终没有被使用过?我们是不是可以用一个匿名函数去取代它。 要知道,Python是支持lambda的呦~

lambda的语法是:lambda arguments : expression

于是,新的函数诞生了:

def fall_time_setup_bylambda(ga:float)->float:return lambda height : math.sqrt(2 * height * ga)

调用部分的代码,和刚才的调用一模一样。

OK,下面是前面所有的代码以及调用,可以直接保存 .py 文件看看效果。

# 如何在 Python 中使用“柯里化”编写干净且可重用的代码import mathdef fall_time(height: float) -> float:"""计算物体下落时间,强制按照北京的重力加速度设定:@param: height: 物体所处高度"""return math.sqrt(2 * height * 9.80122)print(fall_time(100))
print(fall_time(200))
print(fall_time(300))def fall_time_with_ga(height, ga):"""计算物体下落时间,考虑到重力加速发生变化,作为形参传入:@param: height: 物体所处高度"""return math.sqrt(2 * height * ga)print(fall_time_with_ga(100, 9.80122))
print(fall_time_with_ga(200, 9.80122))
print(fall_time_with_ga(300, 9.80122))def fall_time_setup(ga: float):"""计算物体下落时间,考虑到重力加速发生变化并且为了代码简洁,做了柯里化的处理:@param: height: 物体所处高度"""def fall_time(height: float):return math.sqrt(2 * height * ga)return fall_timebeijing = fall_time_setup(9.80122)  # 首先设定重力加速度的值, 真正计算的时候只关心高度即可
print(beijing(100))
print(beijing(200))
print(beijing(300))def fall_time_setup_bylambda(ga: float) -> float:"""计算物体下落时间,使用匿名函数"""return lambda height: math.sqrt(2 * height * ga)beijing = fall_time_setup_bylambda(9.80122)
print(beijing(100))
print(beijing(200))
print(beijing(300))
http://www.khdw.cn/news/33288.html

相关文章:

  • 运营商网站登录注册成都网站优化排名
  • 保定 网站建设湖南长沙今日疫情
  • 建行信用卡网站今日热搜
  • 企业网站建站费用谷歌浏览器网页
  • 网站本地可以打开海外营销推广服务
  • 即墨网站建设代理推广
  • 如何做网站方案优化软件seo排名
  • js素材网站长春seo技术
  • 赣州做网站的新手seo入门教程
  • 网站中的滚动照片怎么做手机黄页怎么找
  • 怎么做网站的登录界面电工培训机构
  • 人民法院公告网怎么查询被起诉seo搜索引擎优化是做什么的
  • 佛山微信网站设计百度百家号
  • 模板网站跟设计性网站的区别公司网址怎么注册
  • 网站项目怎么做的账号权重查询入口
  • 怎样做一个微信公众号北京seo如何排名
  • 论坛网站建设价格地推团队
  • 网站建设推广优化招聘模板就业seo好还是sem
  • 网站建设html代码如何添加济南网站设计
  • 乐陵新闻最新消息今天优化网站推广教程整站
  • 电商网站开发教学视频kj6699的seo综合查询
  • 苏州营销型网站建设推广seo入门书籍推荐
  • 网站怎么做分站seo关键词布局
  • 站酷网站的图是用什么做的扬州网站seo
  • 冯宗耀seo教程搜索引擎排名优化价格
  • 深圳如何做网站英文seo外链发布工具
  • 哪里提供邢台做网站seo北京
  • 注册域名哪个网站好小说关键词搜索器
  • 网站开发完整项目案例无忧软文网
  • 郑州网站排名公司哪些平台可以发布软文