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

信得过的网站开发推广上海网站注销

信得过的网站开发推广,上海网站注销,推广型网站开发软件,新泰做网站原文标题#xff1a;KNOW HOW CLOSURES INTERACT WITH VARIABLE SCOPE比如说你现在想要对一组数字进行排序#xff0c;同时希望提高一组数字的优先级使这组数字优先显示。这种模式在展示用户接口时非常有用#xff0c;在展示用户接口时经常需要优先展示一些重要信息以及异常…原文标题KNOW HOW CLOSURES INTERACT WITH VARIABLE SCOPE比如说你现在想要对一组数字进行排序同时希望提高一组数字的优先级使这组数字优先显示。这种模式在展示用户接口时非常有用在展示用户接口时经常需要优先展示一些重要信息以及异常事件。解决这类问题的一个常用方法是在调用排序方法时传递一个帮助方法作为关键字参数。帮助方法的返回值用于对列表中的每一个元素进行排序。帮助方法能够检查列表中的值是否属于优先显示数组。帮助方法的实例代码如下下面是一个简单应用这个帮助方法能够正常工作有3个原因Python支持闭包方法可以引用包含它们的作用域内的变量(functions that refer to variables from the scope in which they were defined)。这就是为什么helper方法可以访问group参数。在Python中方法是第一类对象(first-class object), 这意味着你可以直接引用方法、将方法赋值给变量、作为参数将方法传递给另一个方法、在if语句或者表达式用比较方法。这就是为什么sort方法可以接收另一个方法作为参数。Python针对元组有一套特殊的比较规则。Python中元组的比较是按照元组中每个元素进行比较的首先比较第0个元素然后比较第一个然后第二个一直比较下去。这就是为什么在helper方法中返回两个不同的元组。如果帮助方法在返回以上元组之外还能返回元素是否出现在了优先数组中将会对调用者更有帮助。看起来在前面代码的基础上实现这个行为非常容易只需要在将代码做如下调整即可执行代码排序正确但是found结果错误。这是为什么呢当你在一个表达式中引用变量时Python解释器会按照以下顺序遍历所有作用域来找到参数引用当前方法的作用域任何闭合作用域(例如其它外围方法)包含当前代码的模块的作用域(也叫 global作用域)内嵌作用域(例如len和str)如果遍历完上面全部作用域还没有找到需要引用的名字就会抛出一个NameError。但是给变量赋值的顺序就不一样了。如果在当前作用域中已经定义了变量那么这个变量就会直接获得新值。如果当前作用域中没有这个变量那么Python会把赋值语句当作变量定义。这个新变量的作用域就是包含赋值语句的方法。赋值语句的行为就解释了为什么sort_priority2 的返回值错误了。found变量在helper中被赋予了true闭包中的赋值语句被认为是一个新变量这不影响外面方法中的变量。两个found的作用域这就是闭包bug。但是这又是希望的结果。这种行为可以有效的防止方法中的变量污染外部模块。否则方法内部的任意赋值语句都会影响全局变量。这样会产生很多噪音还会引起奇怪的bug。使数据可以被访问Python 3在Python 3中有一种特殊语法可以使闭包内的数据被提取出来。使用nonlocal语句可以指定一个变量的遍历方式是从上级开始遍历。唯一的限制就是nonlocal不能遍历到模块级别(防止污染全局变量)。下面使用nonlocal语句重写上面的方法在此nonlocal语句可以很清晰的将一个作用域的变量以入到另一个作用域。它是对global语句的一个补充global指定全局变量。然而就像全局变量的反面模式一样(much like the anti-pattern of global variables)除了简单的函数我不建议大家使用nonlocal。nonlocal的副作用很难被追踪。尤其是在一个非常长的方法中nonlocal语句、赋值语句与相关的变量离的非常远的情况。一旦nonlocal是的代码变复杂你就需要考虑是否可以将代码打包成一个帮助方法。下面我修改前面的代码不使用nonlocal以达到同样目的代码有点长但是更易于阅读Python 2不幸的是Python 2中根本就没有nonlocal关键字。为了达到同样目的你需要利用Python的高级用法来实现一个变通方法。下面的代码实现并不友好但却是Python中的常用方法。就像前面解释的一样Python会向上遍历found被引用的域以确定found当前的值。这里引起欺诈性就是found是一个列表它的值非常易变。这意味着一旦found被检索到闭包方法就可以修改found的状态进而把值从内部作用域中传递出来(在这里使用 found[0] True)。除了使用列表通过使用字典、集合、类的实例一样可以在域间传值。注意事项闭包方法可以在它们定义的作用域内引用任何变量默认情况下闭包方法不能给外部变量赋值在Python 3中可以使用nonlocal语句指定修改闭包以外的变量在Python 2中使用可变值变量来代替nonlocal语句除了非常简单的方法外避免使用nonlocal语句。
http://www.yutouwan.com/news/406746/

相关文章:

  • wpf做网站网站建设的意义与价值
  • 做一个网站的步骤设计型网站
  • 购物网站开发大纲网站编辑框超链接怎么做
  • 网站怎么做预约小程序锦州建设工程信息网站
  • 网站开发维护成本福州产品网页制作的公司
  • 工业设计软件上市公司seo优化 搜 盈seo公司
  • 连云港网站建设方案船员专用网站开发建议
  • 怎么做网站写书做网站怎么找优质客户
  • 太仓市住房和建设局网站网站开发公司特点
  • 智联招聘网站怎么做两份简历模板莱芜市城乡建设局网站
  • 想自己搭建网站得怎么做制作彩票网站需要多少钱
  • 新手初做网站镇江网站建设哪家好
  • 多合一网站建设上谷网络网站建设
  • 呼和浩特网站推广公司品质好
  • 58同城网站建设深圳丽丽亚广州最富裕的三个区
  • 微信网站建设知识wordpress显示段落
  • 活动网站推广网站建商城
  • 做网站是通过怎么挣钱网站建设实训总结200
  • 做的网站进不去后台网页制作软件哪个好用
  • 新手如何做网站的教程沈阳做网站开发公司
  • 网站建设推广公司需要哪些岗位电子商务网站建设的建议
  • 个人网站cms系统网页设计电脑配置推荐
  • 湘西网站建设公司建筑工程招聘信息网
  • 西安网站建设开发公司怎么样做餐饮的餐具网站有哪些
  • 免费素材网站图库湖南金科建设有限公司网站
  • 网站建设运营有限公司网站建设地基本流程
  • 建站平台 做网站设计师论坛
  • 博罗营销网站制作邢台seo服务公司
  • 做网站 什么后缀wordpress教程 页面
  • php与mysql网站开发...河北省建设项目信息网站