谁手上的好牌更多?
对于W类的实例(第22行),当我们调用bingo()方法时,此方法在其自己的类中解析,因为它是在类中定义的(第18-20行)。但是,此方法将进一步调用bin()和go()方法。 以类似的方式,bin()方法在其自己的类中得到解析,但它调用超类的bin()方法,如第15行所示。但是在其直接超类(即Y和Z)中,都未实现 bin()方法,因此Python会比超类的超类(如X)高一个级别,在该超类中实现并调用bin()方法。 值得注意的是,对于W的go()方法,其两个超类都实现了此方法,但是如你所见,这仅调用了Y类中使用的实现。因为当定义W类时,继承顺序为Y和Z,这将使MRO遵循相同的顺序。
与此相关的是,可以使用特殊方法__mro__找出特定类的MRO。另外,为了展示类继承顺序的重要性,我们创建了另一个类,其中Z类位于Y类之前,这会更改W_类的MRO。 否则,它将在更高层次上查找——函数内部与内嵌函数之间。这一范围仅存在于函数的嵌套结构中。当在另一个函数中声明一个函数时,我们将内部函数称为内部函数,将外部函数称为外部函数。当解释器尝试解析内部函数范围内使用的变量时,如果无法在局部范围内解析,它将进入封闭范围,即外部函数的局部范围。 如果仍然无法解析封闭范围内的变量,它将转到全局范围。全局作用域通常是模块级别,通常是独立的Python文件。值得注意的是,将包导入当前文件时,导入中的函数和类也将成为全局范围的一部分。内置作用域是启动解释器时要加载的函数、类和其他模块,以使这些最基本的对象始终可用(例如print和其他内置函数)。 5. MRO(方法解析顺序) 方法解析顺序表示Python或编程语言通常如何解析方法或属性。上面讨论的LEGB规则关注的是解决变量,而MRO不同,它关注的是对象以及对象的方法调用或特定属性的获取如何解决。
MRO主要是在多继承的上下文中讨论的——从多个类(即超类)和/或继承的多层继承的类(即子类)。因为子类和超类都共享一些具有可能不同实现的通用方法,所以Python解释器需要一种机制来确定在特定调用中应使用哪种方法或属性,而这正是MRO负责的。 4. LEGB(函数内部作用域,函数内部与内嵌函数之间,全局作用域和内置作用域) LEGB规则指的是Python中的变量查找顺序,如下图所示。具体来说,当解释器尝试解析变量时,Python具有四层作用域——了解将哪些值绑定到变量。
首先从内部范围开始,该范围可以是函数或类。如果解释器为该变量找到了相应的绑定值,那么它将停止查找并使用具有该特定值的变量。 代码重构的另一种可能情况是:发现自己要处理一堆具有相同结构的数据。应该考虑使用自己的类来处理这些数据,而不是使用一系列的字典、列表或元组来存储每个人的数据。这不仅可以使程序员本人的代码不易出现错误,而且对代码长期可维护性也很有帮助。 3. PIP(Python包安装和管理工具) Python受欢迎的最重要因素是其开放源代码的特性,这种特性带来了大量免费的Python软件包。根据维基百科介绍,在Python软件包索引(PyPI)中索引了235000多个软件包。
我们可以使用pip工具从PyPI安装任何软件包。该安装过程非常轻松,只需在命令或终端中使用一行代码即可。以下代码段总结了一些常用用法。想要了解有关pip工具用法的更多信息, Python是许多编程初学者的首选语言,它的语法非常直观,并且具有支持动态类型的灵活性;此外,它还是一种解释性语言,可以使用交互式控制台进行学习。基本上,只使用命令行工具(例如Mac中的Terminal)就能够开始学习Python,如今macOS系统已经附带了Python。 学习过程中,我们会逐渐熟悉它的数据结构、控制流、类、函数和其他基本知识。此外,还有一件有趣的事人们不常提起:时不时就会遇到Python中的各种首字母缩写词。 本文将回顾十个这样的缩写词,包括通用的编程原理以及特定的Python编码,每个词都有自己有用有趣的方面。 1. OOP(面向对象编程) 要介绍的第一个缩写是OOP——面向对象编程,这就是Python所基于的设计。 大家都知道编程本身是关于编码的,但是程序本身应该是关于数据的。程序需要获取输入数据、处理数据和输出数据。请注意,此处讨论的数据是最一般意义上的数据,可以包括表格数、字符串、用户操作(例如单击按钮)、图像以及任何形式的具有信息的数据。代码的工作就是处理各种形式的数据,并以所需的方式呈现它们。 为了完成工作,人们需要能够处理这些数据的代码,而现代编程语言(包括Python)中的一种常见设计模式就是采用OOP范例。这个想法非常直观——我们用特定的对象包装数据。 更具体来讲,对象可以保存数据(例如属性)并且可以操作数据(例如方法)。例如,如果开发一个赛车游戏,那么我们可以构建汽车对象,并且每个对象都可以具有特定的属性,如颜色、最大速度和重量。此外,这些对象还可以进行制动和加速等操作。这些数据的逻辑组织以对象(汽车)为中心。
下面来看一下Python中的特定示例。可以使用内置的str类包装字符串数据,人们不仅可以使用字符串对象传递字符串数据,还可以改变字符串的表示方式。请看一个非常琐碎的示例。 (编辑:长春站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |