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

asp网站开发移动端网络营销软件代理

asp网站开发移动端,网络营销软件代理,百度推广账户登录首页,网站设计公司要多少钱我们来实现一个可变参数的求和。通常情况下#xff0c;求和的函数是这样定义的#xff1a;def calc_sum(*args):ax0for n inargs:ax ax nreturn ax但是#xff0c;如果不需要立刻求和#xff0c;而是在后面的代码中#xff0c;根据需要再计算怎么办#xff1f;可以不返回…我们来实现一个可变参数的求和。通常情况下求和的函数是这样定义的def calc_sum(*args):ax0for n inargs:ax ax nreturn ax但是如果不需要立刻求和而是在后面的代码中根据需要再计算怎么办可以不返回求和的结果而是返回求和的函数def lazy_sum(*args):defsum():ax0for n inargs:ax ax nreturnaxreturnsumf lazy_sum(1, 2, 3, 4)print(f)print(f())以上代码输出.sum at 0x1014476a810当我们调用lazy_sum()时返回的并不是求和结果而是求和函数调用函数f时才真正计算求和的结果。在这个例子中我们在函数lazy_sum中又定义了函数sum并且内部函数sum可以引用外部函数lazy_sum的参数和局部变量当lazy_sum返回函数sum时相关参数和变量都保存在返回的函数中这种称为“闭包(Closure)”的程序结构拥有极大的威力。请再注意一点当我们调用lazy_sum()时每次调用都会返回一个新的函数即使传入相同的参数def lazy_sum(*args):defsum():ax0for n inargs:ax ax nreturnaxreturnsumf1 lazy_sum(1, 2, 3, 4)f2 lazy_sum(1, 2, 3, 4)print(f1f2 :, f1 f2)以上代码输出f1f2 : Falsef1()和f2()的调用结果互不影响。闭包(closure)是函数式编程的重要的语法结构。下面看一个闭包的实际例子defline_conf(a, b):defline(x):return a * x breturnlineline1 line_conf(1, 2)line2 line_conf(3, 7)print(line1(5), line2(5))这个例子中函数line与环境变量a,b构成闭包。在创建闭包的时候我们通过line_conf的参数a,b说明了这两个环境变量的取值这样我们就确定了函数的最终形式(y x 2和y 3x 7)。我们只需要变换参数a,b就可以获得不同的直线表达函数。由此我们可以看到闭包也具有提高代码可复用性的作用。如果没有闭包我们需要每次创建直线函数的时候同时说明a,b,x。这样我们就需要更多的参数传递也减少了代码的可移植性。利用闭包我们实际上创建了泛函。line函数定义一种广泛意义的函数。这个函数的一些方面已经确定(必须是直线)但另一些方面(比如a和b参数待定)。随后我们根据line_conf传递来的参数通过闭包的形式将最终函数确定下来。闭包与并行运算闭包有效的减少了函数所需定义的参数数目。这对于并行运算来说有重要的意义。在并行运算的环境下我们可以让每台电脑负责一个函数然后将一台电脑的输出和下一台电脑的输入串联起来。最终我们像流 水线一样工作从串联的电脑集群一端输入数据从另一端输出数据。这样的情境最适合只有一个参数输入的函数。闭包就可以实现这一目的。这也是函数式编程又热起来的一个重要原因。函数式编程早在1950年代就已经存在但应用并不广泛。然而我们上面描述的流水线式的工作并行集群过程正适合函数式编程。由于函数式编程这一天然优势越来越多的语言也开始加入对函数式编程范式的支持。需要注意的问题是返回的函数并没有立刻执行而是直到调用了f()才执行。我们来看一个例子defcount():fs[]for i in range(1, 4):deff():return i*ifs.append(f)returnfsf1, f2, f3count()print(f1():, f1())print(f2():, f2())print(f3():, f3())在上面的例子中每次循环都创建了一个新的函数然后把创建的3个函数都返回了。你可能认为调用f1()f2()和f3()结果应该是149但实际结果是f1(): 9f2():9f3():9全部都是9原因就在于返回的函数引用了变量i但它并非立刻执行。等到3个函数都返回时它们所引用的变量i已经变成了3因此最终结果为9。返回函数不要引用任何循环变量或者后续会发生变化的变量。如果一定要引用循环变量怎么办方法是再创建一个函数用该函数的参数绑定循环变量当前的值无论该循环变量后续如何更改已绑定到函数参数的值不变defcount():deff(j):defg():return j *jreturngfs[]for i in range(1, 4):fs.append(f(i))#f(i)立刻被执行因此i的当前值被传入f()returnfsf1, f2, f3count()print(f1():, f1())print(f2():, f2())print(f3():, f3())以上代码输出f1(): 1f2():4f3():9
http://www.pierceye.com/news/775560/

相关文章:

  • 企业网站设计调查问卷步骤记录器
  • dw里响应式网站怎么做郑州电力高等专科学校学费多少
  • 用app怎么样建网站深圳专业做网站的
  • 怎样做浏览的网站不被发现互联网营销师报考条件
  • 电子商务网站建设与电子支付网站进不去怎么解决
  • 微信网站模板下载电子商务网站建设的四个步骤
  • 网站内如何做论坛建设网站宝安区
  • 公司网站管理制定的作用网站建设设计文档模板
  • 做网站 附加信息全网整合营销公司
  • 做网站都需要用到什么软件每年网站备案抽查
  • 网站如何做电脑和手机软件ps素材网站大全
  • 佛山网站建设培训高能建站
  • 网站开发的相关技能广州有哪些广告公司
  • jsp网站设计用以前用过的域名做网站
  • 魔兽世界做宏网站家具设计与工程就业前景
  • 网站案例介绍平面设计网址推荐
  • 网站上的验证码怎么做简书 导入 wordpress
  • 想把公司的外部网站替换金戈枸橼酸西地那非片
  • 个人可以做社区网站淄博网站文章优化
  • 晋中建设集团网站windows图标wordpress
  • 如何创建商业网站为网站网站做代理被判缓刑
  • 个人备案做运营网站wordpress公众号源码
  • 营销网站服务器郑州金水区
  • 陕煤化建设集团铜川分公司网站大冶建设局网站
  • 网站如何制作django企业网站开发实例
  • 免费网站建设软件大全平面设计与网页设计
  • 建设网站 怀疑对方传销 网站制作 缓刑网站ip如何做跳转
  • 公司网站建设要求书网页怎么弄到桌面快捷方式
  • 做网站 公司 个体学校网站建设板块分析
  • 如何让百度更新网站收录wordpress图片处理类