对于初学者:每个Python程序员都应该知道的10个首字母缩略词一种可以使用交互式控制台学习的解释型语言。基本上只用命令行工具(比如Mac中的Terminal)就可以开始学习Python,现在macOS系统自带了Python。在学习过程中,我们会逐渐熟悉它的数据结构、控制流、类、函数等基础知识。此外,还有另一件人们不常提起的有趣的事情:您时不时会遇到Python中的各种首字母缩略词。本文将回顾十个这样的首字母缩略词,它们既适用于一般编程原则,也适用于特定的Python编码,每个都有其有用和有趣的方面。1.OOP(ObjectOrientedProgramming)首先要介绍的首字母缩写词是OOP——ObjectOrientedProgramming,它是Python所基于的设计。大家都知道编程本身是关于编码的,但是程序本身应该是关于数据的。程序需要获取输入数据、处理数据和输出数据。请注意,此处讨论的数据是最一般意义上的数据,可以包括表格编号、字符串、用户操作(例如按钮单击)、图像和任何形式的带有信息的数据。代码的工作是获取各种形式的数据并以所需的方式呈现它们。为了完成工作,人们需要可以操作这些数据的代码,而现代编程语言(包括Python)中的一种常见设计模式是采用OOP范例。这个想法非常直观——我们用特定的对象包装数据。更具体地说,对象可以保存数据(例如属性)并可以操作数据(例如方法)。例如,如果开发赛车游戏,那么我们可以构建汽车对象,每个对象都可以具有特定的属性,例如颜色、最大速度和重量。此外,这些对象可以执行制动和加速等动作。这些数据的逻辑组织以对象(汽车)为中心。让我们看一个Python中的具体示例。可以使用内置的str类包装字符串数据,不仅可以使用字符串对象传递字符串数据,还可以更改字符串的表示方式。看一个非常简单的例子。>>>#Createavariableofstrtype...hello="HelloPython!"...#Sendthedatatoafunctioncall...print(hello)...#Manipulatethestringdatawithstringmethods...hello_lower=hello.lower()...hello_upper=hello.upper()...打印(小写:,hello_lower)...打印(大写:,hello_upper)...HelloPython!小写:hellopython!大写:HELLOPYTHON!字符串数据处理2.DRY(不要重复)DRY(Don'tRepeatYourself)原则是每个程序员都应该实践的最基本的规则之一。其含义很简单:如果你在代码中看到任何重复,那么它就表明需要进行一些重构以最小化重复,或者如果可能,完全删除任何重复信号。以下示例演示了通过应用DRY原则重构某些代码:defdo_something(item):pass#Repetativeworkdo_something(item0)do_something(item1)do_something(item2)#ApplyDRYforitemin(item0,item1,item3):do_something(item)不要重复自己一系列字典、列表或元组来存储每个人的数据,你应该考虑使用自己的类来处理这些数据。这不仅使程序员自己的代码不易出错,而且有助于在代码的长期可维护性方面。3、PIP(PythonPackageInstallationandManagementTool)Python流行的最重要因素是它的开源特性,它带来了大量免费的Python软件包。根据维基百科,Python包索引(PyPI)中索引了超过235,000个软件包。我们可以使用pip工具从PyPI安装任何包。安装过程就像在命令或终端中输入一行代码一样简单。以下代码片段总结了一些常见用法。想了解更多pip工具的使用方法,可以访问其官网:https://pip.pypa.io/en/stable/user_guide/。#installlatestversionpipinstallpackage_name#installaparticularversionpipinstallpackage_name==version_number#touninstallapackagepipuninstallpackage_name#toshowinstalledpackagespiplist#toshowtheinformationaboutaparticularpackagepipshowpackage_name#toinstallalistofdependencies,suchastocloneavirtualenvironmentpipinstall-requirements.txtPIP使用示例4。LEGB(函数内部作用域,函数内部与内函数之间,全局作用域和内部作用域)LEGB规则是指Python中的变量查找顺序,如下图所示。具体来说,当解释器试图解析变量时,Python有四个级别的作用域——知道将什么值绑定到变量上。从内部作用域开始,它可以是函数或类。如果解释器找到该变量的相应绑定值,则它会停止查找并使用具有该特定值的变量。变量解析规则否则,它会查看更高的级别-函数内部和嵌套函数之间。此作用域仅存在于函数的嵌套结构中。当在另一个函数内部声明一个函数时,我们将内部函数称为内部函数,将外部函数称为外部函数。当解释器试图解析一个在内部函数作用域中使用的变量时,如果它不能在局部作用域中解析它,它将进入封闭作用域,即外部函数的局部作用域。如果它仍然无法解析封闭范围内的变量,它将转到全局范围。全局作用域通常在模块级别,通常是一个单独的Python文件。值得注意的是,当一个包被导入到当前文件中时,导入中的函数和类也会成为全局作用域的一部分。内置作用域是解释器启动时加载的函数、类和其他模块,从而使这些最基本的对象始终可用(例如打印和其他内置)。5.MRO(MethodResolutionOrder)方法解析顺序表示Python或编程语言通常如何解析方法或属性。与上面讨论的专注于解析变量的LEGB规则不同,MRO专注于对象以及如何解析它们的方法调用或对特定属性的访问。MRO主要在多重继承的上下文中讨论-从多个类(即超类)和/或多个继承级别(即子类)继承的类。因为子类和超类都共享一些具有潜在不同实现的公共方法,Python解释器需要一种机制来确定在特定调用中应该使用哪个方法或属性,而这正是MRO所关心的。>>>classX:...defbin(self):...print(f"bincalledinX")...classY(X):...defgo(self):...print(f"gocalledY")...classZ(X):...defgo(self):...print(f"gocalledZ")...classW(Y,Z):...defbin(self):...super()。bin()...print(f"bincalledW")...defbingo(self):...self.bin()...self.go()。.....w=W()...w.bingo()...bincalledinXbincalledWgocalledY方法解析顺序对于W类的一个实例(第22行),当我们调用bingo()方法时,这个方法在其own因为它是在类中定义的(第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。>>>打印(WClassMRO:,W.__mro__)......类W_(Z,Y):...通过......打印(W_ClassMRO:,W_.__mro__)...WClassMRO:(
