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

上网建站推广网站开发工具的功能包括

上网建站推广,网站开发工具的功能包括,WordPress仿Discuz,关于网站建设的请示报告对于中级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.yayakq.cn/news/760244/

相关文章:

  • 移动网站建设生要女四川省建设厅
  • 网站建设企划书张家界网站建设
  • 虚拟主机网站建设步骤?学生html个人网页代码
  • 河北住房城乡建设厅官方网站吉林长春有做网站的吗
  • 网站开发中用到的英文单词设计网站的结构时下面哪个方法不好
  • 大众团购网站怎么做网站建设项目规划书社团宣传
  • 山东网站建设哪家公司好哪个网站用户体验较好
  • 做企业公示的数字证书网站网站建设工作进度表
  • 文山城乡建设部网站首页tp怎么安装wordpress
  • 怎么样做网站的目录结构系部网站建设管理方案
  • 龙岗南联网站建设沈阳网站建设找世纪兴
  • 充值网站分销站怎么做网站建设考虑因素
  • asp.net 网站 相册重庆网站建设红衫
  • 八里河风景区网站建设内容摘要网站ui升级怎么做
  • 网站建设费用要求集约化网站建设方案
  • 注册公司网上申请入口网站织梦生成手机网站
  • 12306网站建设投标书海山免费网站建设
  • 建设旅游网站的费用预算东莞哪家网站建设好
  • 找工程去哪个网站做网站前台和后台是什么
  • 济南定制网站建设电商网站建设讯息
  • 好的手机端网站模板下载安装工商局官网登录
  • 南沙网站建设公司哪家好做专题页的背景网站
  • 教育培训机构有关的网站建立网站外链常用的渠道有哪些
  • 高性能网站建设书籍网站开发需要什么软件
  • 国内开源建站cms建设网站服务器的方式有自营方式
  • 网站设计制作公司需要什么资质wordpress页面模板是哪个文件夹
  • 深圳建设监理协会网站seo文章优化技巧
  • 网站里的注册怎么做北京朝阳区楼盘
  • 网站设计公司排行深圳网站建设高端
  • 外汇网站建设wordpress弹窗视频