- 博客(1308)
- 收藏
- 关注
原创 空投推荐:AIArena:Paradigm领投的NFTAI竞技场
AI Arena 对自己的形容是「一场全球性的元竞赛」,这场「元竞赛」由「研究竞赛」与「游戏竞赛」两个截然不同而又相辅相成的部分组成。在「研究竞赛」中进行比拼的是「研究者」。作为一个「研究者」,你将在 AI Arena 创建的 Python 环境中用代码调教出自己的最强 AI 模型,传至链上与来自其他「研究者」的 AI 模型进行 PK。这是一个比较硬核的比拼,对于大部分没有开发基础的玩家来说,他们将在「游戏竞赛」中一决高下。
2024-04-26 18:04:18
541
2
原创 Python从小白到高手实现系列六百九十五:README 文件
Python 包索引可以在PyPI 门户的包页面中显示一个项目的readme 或者long_description 的值。你可以用reStructuredText 标记来编写这个说明,它在上传时会转换为HTML 格式。不幸的是,目前PyPI 上的文档标记只能使用reStructuredText。这在短期内也不太可能改变。更有可能的是,如果warehouse 项目完全取代了当前的PyPI 实现,那么将会支持其他标记语言。不幸的是,我们仍然不知道warehouse 的最终发布时间。
2024-04-23 09:14:46
390
原创 Python从小白到高手实现系列六百九十四:使用其他语言开发Python 扩展
幸运的是,distutils 和setuptools提供了辅助程序将编译好的扩展定义为模块,因此编译和分发可以使用setup.py 脚本处。Debian/Ubuntu 中的python-dev),但是在Windows 下,它是默认分发的,可以在Python 的。Pyrex 这样的工具,它们仅仅出于扩展的目的而提供了Python 语言的超集,实际上它们只。不幸的是,在C 和C++中,直接使用Python/C API 编写自己的扩展是相当苛刻的。还要注意,不同的操作系统具有互不兼容的ABIs,
2024-04-23 09:13:56
340
原创 Python从小白到高手实现系列六百九十三:最重要的元数据
除了被分发包的名称和版本之外,setup 可以接受的最重要的参数包括。• description:包含描述包的几句话。• long_description:包含完整说明,可以使用reStructuredText 格式。• keywords:定义包的关键字列表。• author:作者的姓名或组织。• author_email:联系人电子邮件地址。• url:项目的URL。• license:许可证(GPL、LGPL 等)。• packages:包中所有名称的列表;
2024-04-23 09:13:24
338
原创 Python从小白到高手实现系列六百九十二:setup.cfg
此外,如果你的包是由subversion 或CVS 管理,那么sdist 将浏览诸如.svn 之类的。相同的目录中,你可以为MANIFEST 文件定义一个名为MANIFEST.in 的模板,在其中你。setup.cfg 文件包含setup.py 脚本命令的默认选项。使用sdist 命令构建发行版时,distutils 将浏览包的目录,查找需要包含在存档。加复杂,并且需要向setup.py 命令中传入许多可选参数,那么这个文件非常有用。假设你不使用这些版本控制系统,并且需要包含更多的文件。
2024-04-23 09:12:51
207
原创 Python从小白到高手实现系列六百九十一:由于PyPA 的存在,Python 打包的现状
的内置命令,而Extra commands(额外命令)则是由诸如setuptools 这样的第三方包。虽然distutils 是一个标准库模块,但建议你使用setuptools 包来代替,它对标准的。distutils 模块中描述的所有元数据,并将其合并为标准的setup()函数调用的参数。实际的命令列表更长,而且会根据setuptools 的可用扩展而变化。PyPA 除了提供一份权威的打包指南之外,还维护着打包项目与新的官方打包的标准化。很显然,组织大型应用的代码的最简单方法是将其分成几个包。
2024-04-23 09:12:18
343
原创 Python从小白到高手实现系列六百九十:编写一个包
• 在Python 包索引(Python Package Index,PyPI)中如何注册并上传包,重点强调。• 所有包的通用模式(common pattern),描述所有Python 包之间的相似之处,以及。(fork)、替代项目与完全重新编写,都想要彻底修复Python 的打包生态系统。对它的兴趣只可能是历史原因,事实上,Python。包,可以让你深入了解打包生态系统,并且有助于你使用PyPI 上可用的第三方代码。实践的权威信息来源。你可以将它当作关于打包的最佳信息来源,也可以当作本章的补充。
2024-04-23 09:11:45
238
原创 Python从小白到高手实现系列六百八十九:pep8 和flake8
pep8 这个工具只有一个目的:它仅提供对PEP 8 代码约定的风格检查。pep8 的输出比PyLint 更简单,也更容易解析,所以如果你想要与一些连续集成解决方案(例。与Pylint 的输出的主要区别在于其长度。的主要区别,后者具有许多额外的功能。感兴趣的程序员来说,这是最佳选择,不需要任何额外的工具配置(像Pylint 那样)。警告,例如未使用的变量、太长的函数名称或文档字符串缺失。它也不会给出任何评分。风格指南,介绍了一些命名建议,可以让你以后的代码更加明确;任何对风格指南的违背—即使是最小的违。
2024-04-23 09:11:11
146
原创 Python从小白到高手实现系列六百八十八:Pylint
要想对Pylint 进行微调,第一件要做的事就是,使用-generate-rcfile 选项在项。注意,Pylint 可能会给出不好的评分或抱怨。除了检查是否遵守某种任意的编码标准,Pylint 还可以给出有关整体代码质量的额外。是可调节的,所以如果你的团队使用一些与默认不同的命名和编码约定,你可以轻松配置。重要的是要知道,有些规则是任意的,不能轻易应。Pylint 只是一个工具,指出可能的改进之处。Pylint 的实际输出要更长一些,这里只截取了其中一部分。• 缺失的函数、方法或类的文档字符串。
2024-04-23 09:10:33
390
原创 Python从小白到高手实现系列六百八十七:类的名称
_init__模块也可以用于将一些API 放回顶层,因为它不会影响使用,但有助于将代码。• pep8 和flake8:它们是小型的代码风格检查器,也是包装器,添加了一些更有用的。但要注意,这可能会增加循环依赖的可能性,并且在__init__模块中添加的代码将被。模块和包的名称应体现其内容的目的。类的名称必须简明、精确,并足以使人理解类的作用。如果一个模块开始变得复杂,并且包含许多类,那么好的做法是创建一个包并将模块。最重要的是要和类属性保持一致。前面的约定和实践的一部分可以使用下列工具来控制和处理。
2024-04-23 09:10:02
299
原创 Python从小白到高手实现系列六百八十六:小心使用*args 和**kwargs 魔法参数
args 和**kwargs 参数可能会破坏函数或方法的鲁棒性。它们会使签名变得模糊,args 或**kwargs 不同,因为它可以提供能够操作数值并且能够独立发展的内部。如果*args 被用于处理元素序列(在函数中以相同方式处理),那么要求传入唯一的。签名的函数的装饰器,它是不可或缺的。如果参数列表变得很长而且很复杂,那么添加魔法参数是很吸引人的。另一种有趣的方法是创建一个容器类,将多个相关参数分组以提供执行上下文。魔法参数有时是无法避免的,特别是在元编程中。是一个脆弱的函数或方法,应该被分解或重构。
2024-04-23 09:09:31
409
原创 Python从小白到高手实现系列六百八十五:参数的最佳实践
这种检查参数的方法是契约式设计(Design by Contract,DbC,参见http://en.wikipedia.org/这可以通过3 个简单的规则来实现。函数和方法的签名是代码完整性的保证,它们驱动函数和方法的使用并构建其API。让我们来关注一个遵循TDD 方法的代码库,它向正确的方向发展,每当出现新的缺陷。当它以正确的方式完成时,测试中的断言列。如果每个函数都有一个固定的、定义明确的参数列表,那么代码的鲁棒性会更好。如果库中的代码被外部元素使用,那么进行断言可能是有用的,因为传入的数据可能。
2024-04-23 09:08:54
388
原创 Python从小白到高手实现系列六百八十四:避免通用名称
trash(垃圾箱)或dumpster(垃圾桶),因为这正是他们的队友最终对这些模块的处理方式。堆不相关的、质量非常差的代码片段,其大小呈指数增长。这样做的原因是它们的含义模糊、模棱两可,且没有向实际名称中添加任何信息。还有许多包的名称应该避免。但现实表明,在许多情况下,它们都会变为危险的结构反模式,并且迅速增长。在大多数情况下,更多的小模块几乎总是更好,即使内容很少,但名称可以很好地反。尽量使用原创的名称,即使是上下文的局部名称。使用上下文中已经存在的名称是不好的做法,因为它会导致阅读代码时—特别是调。
2024-04-23 09:08:10
249
原创 Python从小白到高手实现系列六百八十三:类
如果一个元素保存的是布尔值,is 和has 前缀提供一种自然的方式,使其在命名空。如果模块是包的私有模块,则添加一个前缀下划线。也在命名空间的构建中具有重要的作用,从而也影响代码可读性。类名称始终采用驼峰式命名法,如果它们是模块的私有类,还可能有一个前缀下划线。如果一个元素保存的是集合变量,那么使用复数形式是一个好主意。如果一个变量保存的是映射,那么你应该尽可能使用显式名称。除了特殊模块__init__之外,模块名称都使用小写,不带下划线。包名称遵循同样的规则,因为它的表现就像是更加结构化的模块。
2024-04-23 09:07:38
238
原创 Python从小白到高手实现系列六百八十二:特殊方法
特殊方法(https://docs.python.org/3/reference/datamodel.html#special-method-names)以双下划线开始和结束,常规的方法不应该使用这种约定。有些开发者曾经将其称为dunder方法,作为双下划线(double-underscore)的合成词。它们可用于运算符重载、容器定义等方面。
2024-04-23 09:07:02
242
原创 Python从小白到高手实现系列六百八十一:函数和方法
些模块(例如threading)而言,你可以访问使用混合大小写(mixedCase)的旧的函数。这样的大型项目而言,这么做并不可行。关于这个主题的更多信息,许多年前在Python-Dev 邮件列表中出现过一个有趣的讨论,如变量、函数和方面的混合大小写)作为它自己的编码标准的一部分。还值得注意的是,Twisted 项目的开发人员采用一种完全不同的方法来解决这个问题。全兼容,因为它特别强调,在项目内的一致性比遵守PEP 8 风格指南要更加重要。保某些基类隐式地避免子类中的冲突,特别是在多重继承的上下文中。
2024-04-23 09:06:31
305
原创 Python从小白到高手实现系列六百八十:命名和使用
常量用来定义程序所依赖的一组值,例如默认配置文件名。好的做法是将所有常量集中放在包中的一个文件内。举个例子,Django 采用的就是这种方法。一个名为settings.py 的模块提供所有常量,如下所示:SQL_USER = ‘tarek’SQL_PASSWORD = ‘secret’SQL_URI = ‘postgres://%s:%s@localhost/db’ % (SQL_USER, SQL_PASSWORD)MAX_THREADS = 4另一种方法是使用可以被ConfigParse
2024-04-23 09:05:57
574
原创 Python从小白到高手实现系列六百七十九:超越PEP 8—团队的风格指南
体现PEP 8 的官方规则。要记住,比遵守PEP 8 更重要的是项目内的一致性。尽管PEP 8 提供了一套全面的风格指南,但仍为开发者留有一些自由,特别是在嵌套。此外,在某些情况下,对于没有定义风格指南的一些老项目,严格遵守PEP 8 可能在。这样的项目仍然可以从正式发布的编码约定中受益,即使这些约定中没有。使用常量的另一个好的做法是,将它们集中放在使用它们的模块顶部,如果它们要用。外的风格规则,最好的做法就是正式发布某种文件供所有团队成员使用。用,而不在代码主体中使用,所以这种冗长的名称并不会令人厌烦。
2024-04-23 09:05:22
376
原创 Python从小白到高手实现系列六百七十八:选择好的名称
如果你想接受来自其他程序员的任何协作,即使你对最佳代码风格指南有不同的看法,那么也应该坚持遵守PEP 8。而且,如果整个项目的代码库处于成熟的开发状态,那么对其重新调整风格(restyling)与代码布局有关的细节等基本规则之外,PEP 8 还介绍了大部分代码库所遵循的命名约定。本节给出了这一PEP 的简要总结,并进一步给出了每种元素的命名最佳实践指南。对于新人来说,代码更容易阅读,因为它的。例如,内置类型的使用是很自然的,其设计。伤的事实,但为了不失去贡献者,你最终可能还是会被迫与这种风格保持一致。
2024-04-23 09:04:41
263
原创 Python从小白到高手实现系列六百七十七:使用代码生成模式的项目
很难找到一个真正可用的库的实现,它依赖代码生成模式,而又不仅是一项实验或简单的概念证明。造成这种情况的原因是显而易见的,如下所示。• 对exec()和eval()函数必要的担心,因为不负责任的使用可能会造成真正的灾难。• 成功的代码生成非常困难,因为它需要对语言特性的深入理解和优异的通用编程技能。尽管有这些困难,但仍有一些项目成功地应用了这种方法,或者提高了性能,或者实现了其他方法无法实现的事情。(1)falcon 的编译路由器。
2024-04-23 09:04:04
850
原创 Python从小白到高手实现系列六百七十六:抽象语法树
利用元钩子,你可以覆写sys.path 的处理方式,甚至是冻结模块(frozen module)和内置模块。• 导入路径钩子(import path hook):它是作为sys.path 处理的一部分被调用的。macropy)就用到了这样的技术,利用已经存在的语法向Python 中添加语法宏(参见图3-5)。用ast.parse()帮助函数,可以创建Python 代码的原始AST。简单,没有用于完成这项功能的内置函数。在上一个例子中,对ast.dump()的输出做了重新格式化,以提高其可读性,并且更。
2024-04-23 09:03:23
386
原创 Python从小白到高手实现系列六百七十五:一些关于代码生成的提示
and eval in Python(参见http://lucumr.pocoo.org/2011/2/1/exec-in-python/)。”换句话说,即使你有一丝的怀疑,也不应该使用它们,而应该尝试寻找其他解决方法。• exec(object, globals, locals):这一函数允许你动态执行Python 代码。对于元编程而言,最有用的显然是exec(),因为它可以执行任意Python 语句的序列。如果你尝试动态生成代码,exec()和eval()函数是最容易上手的,因为它们可以对。
2024-04-22 09:29:43
271
原创 Python从小白到高手实现系列六百七十四:元类的使用
虽然类的调用签名相当严格,但Python 并不强制要求返回参数的类型。这是可能的,但那样的解决方法可能不会这么好用。任意类型的类时,这可能也会降低代码的鲁棒性。类已经实现了一个有冲突的元类,那么你可能会遇到不好的交互。它通常有许多复杂的解决方法,并不容易理解和掌握,但最终来看,其他程序员。但它可以作为元类关键字参数包含在类定义中,而且这不会引发任何问题,虽然这么做没。一旦掌握了元类,它是一种非常强大的特性,但总是会使代码更加复杂。通常来说,元类也可以用其他更简单的方法来代替,但有些情况下,没有元类可能很。
2024-04-22 09:29:10
260
原创 Python从小白到高手实现系列六百七十三:Python 3 中新的元类语法
元类并不是新的Python 特性,从Python 2.2 版开始就一直都有。不过它的语法发生了重大变化,这种变化既不向后兼容也不向前兼容。新的语法如下所示:pass在Python 2 中,其写法必须是这样的:= typePython 2 的class 语句不接受关键字参数,所以Python 3 定义元类的语法会在导入时引发SyntaxError 异常。仍然可以编写在两个Python 版本中都能运行的元类代码,但需要做一些额外工作。
2024-04-22 09:28:40
869
原创 Python从小白到高手实现系列六百七十二:元类
现在第一个位置参数的命名约定为cls,说明它已经是一个创建好的类对象(元类的实例),而不是一个元类对象。name、bases 和namespace 参数的含义与前面介绍的type()调用中的参数相同,• bases:这是父类的列表,将成为__bases__属性,并用于构造新创建的类的MRO。然是type 类的子类(参见图3-4),因为如果不是的话,这个类将在继承方面与其他的类。metaclass 参数的值通常是另一个类对象,但它可以是任意可调用对象,只要接受。并不常见,但其含义与普通类中的含义相同。
2024-04-22 09:28:07
413
原创 Python从小白到高手实现系列六百七十一:使用__new__()方法覆写实例创建过程
特殊方法__new__()是一种负责创建类实例的静态方法。它很特殊,所以无需使用staticmethod 装饰器将其声明为静态方法。(cls, [,…])方法的调用优先于__init__()初始化方法。
2024-04-22 09:27:37
260
原创 Python从小白到高手实现系列六百七十:装饰器— 一种元编程方法
下面是一个类装饰器的例子,修改__repr__()方法并返回缩短的可打印对象表示,缩短后。Python 有一个不太为人所知的语法特性,就是类装饰器。不幸的是,这个问题不能用第2 章“(4)保存内省的装饰器”一节介绍的方法(使用额外。虽然有这样的警告,但类装饰器仍然是对流行的混入(mixin)类模式的一种简单又轻。复杂的操作,根据原始函数的实现方式来执行内省并给出不同的结果。唯一的区别在于它的返回值是一个类,而不是函数对象。在类装饰器中这样使用闭包的主要缺点是,生成的对象不再是被装饰的类的实例,而是在。
2024-04-22 09:27:02
347
原创 Python从小白到高手实现系列六百六十九:槽
属性来为指定的类设置一个静态属性列表,并在类的每个实例中跳过__dict__字典的创建过程。第一种方法专注于语言对基本元素(例如函数、类或类型)内省的能力与对其实时创建或修改的能力。语言的语法,甚至创建你自己的领域特定语言(Domain Specific Language,DSL)二种方法当然更加复杂,也更难以处理,但可以用来完成不同凡响的任务,例如扩展Python。这里我们也精心选择了不同的工具,允许程序员直接处理代码,或者是原始的纯文。利用这一定义,是我们可以区分Python 元编程的两种主要方法。
2024-04-22 09:26:15
295
原创 Python从小白到高手实现系列六百六十八:property
如果需要修改property 的工作方式,推荐在派生类中覆写所有的property。基于上述原因,创建property 的最佳语法是使用property 作为装饰器。property 的setter 行为的话,通常意味着也需要修改getter 的行为。property 提供了一个内置的描述符类型,它知道如何将一个属性链接到一组方法上。不幸的是,上面的代码有一些可维护性的问题。方法,而不是依赖父类的实现。在大多数情况下,这是唯一的选择,因为如果修改了。是利用当前类的方法实时创建,不会使用派生类中覆写的方法。
2024-04-22 09:25:33
355
原创 Python从小白到高手实现系列六百六十七:现实例子—延迟求值属性
描述符的一个示例用法就是将类属性的初始化延迟到被实例访问时。如果这些属性的初始化依赖全局应用上下文的话,那么这一点可能有用。另一个使用场景是初始化的代价很大,但在导入类的时候不知道是否会用到这个属性。这样的描述符可以按照如下所示来实现:defdef’)else:’)下面是示例用法:cached!PyPI上OpenGL的官方Python库PyOpenGL用到了相似的技术来实现lazy_property,
2024-04-22 09:25:03
539
原创 Python从小白到高手实现系列六百六十六:描述符
实现了__get__()和__set__()的描述符被称为数据描述符(data descriptor)。实现了__get__(),那么就被称为非数据描述符(non-data descriptor)。在每次属性查找中,这个协议的方法实际上由对象的特殊方法__getattribute__()换句话说,数据描述符优先于__dict__查找,而__dict__查找优先于非数据描述符。性时,都会调用描述符的__get__()方法并返回它的值,每次对这个属性赋值时都会调用。它是一个类,定义了另一个类的属性的访问方式。
2024-04-22 09:24:33
261
原创 Python从小白到高手实现系列六百六十五:最佳实践
在Python 2 中,没有指定任何祖先的类被认为是旧式类。这并不是真正的锁定(real lock),因为可以通过其组合名称来访问该属性。• super 的使用必须一致:在类的层次结构中,要么全部用super,要么全不用。为了避免前面提到的所有问题,在Python 在这个领域取得进展之前,我们需要考虑以。Python 提供这一特性是为了避免继承中的名称冲突,因为属性被重命名为以类名为前。这不会调用任何名称修饰的算法,而只是说明这个属性是该类的私。一特性可用于保护某些属性的访问,但在实践中,永远不应使用。
2024-04-22 09:23:52
273
原创 Python从小白到高手实现系列六百六十四:使用super 易犯的错误
在Python 中,基类不会在__init__()中被隐式地调用,所以。如果使用了多重继承的层次结构,那么使用super 是非常危险的,不幸的是,你无法确定外部包的代码中是否使用了super()。使用super 的另一个问题是初始化过程中的参数传递。用到整个类的层次结构中。能很枯燥,但作为奖励,你可以了解这个包的代码质量,并对它的实现有了进一步理解。不过这是一种很糟糕的解决方法,因为它使得所有构造函数都接受任何类型的参数。中显式地使用特定类的__init__()调用,但这又会导致第一种错误。
2024-04-22 09:23:21
233
原创 Python从小白到高手实现系列六百六十三:Python 2 中的旧式类与super
Python 的方法解析顺序是基于C3,这是为Dylan 编程语言(http://opendylan.org)构建的。在早期版本的Python 中,所有类并没有一个共同的祖先object。head(表头)是列表的第一个元素,而tail(表尾)则包含其余元素。Python 所有的2.x 版本中都保留了旧式类,目的是为了向后兼容,所以在这些版本中,如。在Python 2 中,如果使用的是旧式类(不继承自object),仍然存在这样的算法。为所有基类的祖先,即使这在Python 3 中是冗余的。
2024-04-22 09:22:48
296
原创 Python从小白到高手实现系列六百六十二:访问超类中的方法
注意,零参数的super()形式也可用于被classmethod 装饰器装饰的方法。super 的简化形式(不传入任何参数)可以在方法内部使用,但super 的使用并不。前面提到的使用实例很容易理解,但如果面对多重继承模式,super 将变得难以使用。最后,关于super 还有很重要的一点需要注意,就是它的第二个参数是可选的。在代码中需要调用给定实例的超类方法的任何地方都可以使用它。super 是一个内置类,可用于访问属于某个对象的超类的属性。的方法中无参数调用的super()被看作是仅定义了第一个参数。
2024-04-22 09:22:01
334
原创 Python从小白到高手实现系列六百六十一:语法最佳实践—类级别以上
怎样,知道两种模型在Python 2 中的工作原理仍是很重要的,因为这有助于你移植旧代码。这也是为什么本章包含关于 Python 2 旧特性的大量内容,尽管本书针对的是最新版的。现在,我们将向你展示一个名为distinctdict 类的代码如下,它就使用了这种方。的速度更快,代码更整洁。当需要实现与某个内置类型具有相似行为的类时,最好的方法就是将这个内置类型子类化。类型的共同祖先,也是所有没有显式指定父类的用户自定义类的共同祖先。如果查看现有代码,你可能会发现许多类都是对内置类型的部分实现,它们作为子类。
2024-04-22 09:21:27
294
原创 Python从小白到高手实现系列六百六十:可能的用法
https://docs.python.org/3/whatsnew/3.0.html)称,此功能的目的是“鼓励通过元类、装饰器或框架。分重点介绍了与Python 序列和集合相关的语法特性,也讨论了字符串和字节相关的序列。虽然函数注解存在的时间和Python 3 一样长,但仍然很难找到任一常见且积极维护的。本章介绍了不直接与Python 类和面向对象编程相关的多个最佳语法实践。包,将函数注解用作类型检查之外的功能。○ 让IDE 显示函数接受和返回的类型。○ 函数重载/通用函数。○ 参数和返回值的文档。
2024-04-22 09:20:56
153
原创 Python从小白到高手实现系列六百五十九:你可能还不知道的其他语法元素
定义好之后,注解可以通过函数对象的__annotations__属性获取,它是一个字典,里介绍一个简单的技巧,可以帮你记住它的用法:for 循环之后else 子句的含义是“没。自定义函数使用的类型的完全可选的元信息,但事实上,它并不局限于类型提示,而且在。可以为函数定义注解,并在运行时获取这些注解,但仅此而已。如上所述,参数注解的定义为冒号后计算注解值的表达式。任何表达式都可以用作注解,其位置靠近默认参数,这样可以创建一些迷惑人的函数。不过,注解的这种用法只会让人糊涂,没有任何其他作用。
2024-04-22 09:20:17
372
原创 Python从小白到高手实现系列六百五十八:作为一个类
任何实现了上下文管理器协议(context manager protocol)的对象都可以用作上下文管理器。该协议包含两个特殊方法。•(self):更多内容请访问https://docs.python.org/3.3/reference/datamodel.html#object.。•(self, exc_type, exc_value, traceback):更多内容请访问。简而言之,执行with 语句的过程如下:• 调用__enter__方法。
2024-04-22 09:19:33
282
原创 Python从小白到高手实现系列六百五十七:上下文管理器—with 语句
为了确保即使在出现错误的情况下也能运行某些清理代码,try…finally 语句是很有用的。这一语句有许多使用场景,例如:• 关闭一个文件。• 释放一个锁。• 创建一个临时的代码补丁。• 在特殊环境中运行受保护的代码。with 语句为这些使用场景下的代码块包装提供了一种简单方法。即使该代码块引发了异常,你也可以在其执行前后调用一些代码。例如,处理文件通常采用这种方式:try:… continue…
2024-04-22 09:18:55
522
闹钟(ArkTS)源代码
2024-02-04
实例:新闻数据加载(ArkTS)-源码
2024-02-01
Web组件抽奖案例(ArkTS)-源码
2024-02-01
ArkTS 简易视频播放器 示例源码
2024-01-31
ArkTS-管理组件状态(目标管理)源码示例
2024-01-31
自定义下拉刷新动画(ArkTS) 示例代码
2024-01-29
构建多种样式的弹窗 示例代码
2024-01-29
ArkUI 开发框架-常用组件与布局示例代码
2024-01-26
UIAbility内页面间的跳转案例示例代码
2024-01-26
ArkTS 待办列表示例代码下载
2024-01-26
HarmonyOS应用开发者基础认证高精度题库
2023-12-27
基于Amazon Serverless 构建咖啡机零售创新应用手摸手教程手册
2023-06-07
基于Amazon KVS与 Amazon Rekognition Streaming Video Events实时智能视频检测的
2023-06-07
Amazon Neptune ML 图神经网络快速构建 与图神经⽹络关联预测 手摸手动手实例
2023-06-07
腾讯云音视频通话分享 PPT
2023-06-06
音视频 - 在线 K 歌场景PPT
2023-06-06
利用开源项目 Crane 搭建测试集群,检测集群成本及利用率实战手册
2023-06-06
降本之源-云原生成本管理白皮书
2023-06-06
超低延时直播(音视频)白皮书
2023-06-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人