自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1308)
  • 收藏
  • 关注

原创 空投推荐:AIArena:Paradigm领投的NFTAI竞技场

AI Arena 对自己的形容是「一场全球性的元竞赛」,这场「元竞赛」由「研究竞赛」与「游戏竞赛」两个截然不同而又相辅相成的部分组成。在「研究竞赛」中进行比拼的是「研究者」。作为一个「研究者」,你将在 AI Arena 创建的 Python 环境中用代码调教出自己的最强 AI 模型,传至链上与来自其他「研究者」的 AI 模型进行 PK。这是一个比较硬核的比拼,对于大部分没有开发基础的玩家来说,他们将在「游戏竞赛」中一决高下。

2024-04-26 18:04:18 460

原创 Python从小白到高手实现系列六百九十五:README 文件

Python 包索引可以在PyPI 门户的包页面中显示一个项目的readme 或者long_description 的值。你可以用reStructuredText 标记来编写这个说明,它在上传时会转换为HTML 格式。不幸的是,目前PyPI 上的文档标记只能使用reStructuredText。这在短期内也不太可能改变。更有可能的是,如果warehouse 项目完全取代了当前的PyPI 实现,那么将会支持其他标记语言。不幸的是,我们仍然不知道warehouse 的最终发布时间。

2024-04-23 09:14:46 324

原创 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 288

原创 Python从小白到高手实现系列六百九十三:最重要的元数据

除了被分发包的名称和版本之外,setup 可以接受的最重要的参数包括。• description:包含描述包的几句话。• long_description:包含完整说明,可以使用reStructuredText 格式。• keywords:定义包的关键字列表。• author:作者的姓名或组织。• author_email:联系人电子邮件地址。• url:项目的URL。• license:许可证(GPL、LGPL 等)。• packages:包中所有名称的列表;

2024-04-23 09:13:24 286

原创 Python从小白到高手实现系列六百九十二:setup.cfg

此外,如果你的包是由subversion 或CVS 管理,那么sdist 将浏览诸如.svn 之类的。相同的目录中,你可以为MANIFEST 文件定义一个名为MANIFEST.in 的模板,在其中你。setup.cfg 文件包含setup.py 脚本命令的默认选项。使用sdist 命令构建发行版时,distutils 将浏览包的目录,查找需要包含在存档。加复杂,并且需要向setup.py 命令中传入许多可选参数,那么这个文件非常有用。假设你不使用这些版本控制系统,并且需要包含更多的文件。

2024-04-23 09:12:51 167

原创 Python从小白到高手实现系列六百九十一:由于PyPA 的存在,Python 打包的现状

的内置命令,而Extra commands(额外命令)则是由诸如setuptools 这样的第三方包。虽然distutils 是一个标准库模块,但建议你使用setuptools 包来代替,它对标准的。distutils 模块中描述的所有元数据,并将其合并为标准的setup()函数调用的参数。实际的命令列表更长,而且会根据setuptools 的可用扩展而变化。PyPA 除了提供一份权威的打包指南之外,还维护着打包项目与新的官方打包的标准化。很显然,组织大型应用的代码的最简单方法是将其分成几个包。

2024-04-23 09:12:18 297

原创 Python从小白到高手实现系列六百九十:编写一个包

• 在Python 包索引(Python Package Index,PyPI)中如何注册并上传包,重点强调。• 所有包的通用模式(common pattern),描述所有Python 包之间的相似之处,以及。(fork)、替代项目与完全重新编写,都想要彻底修复Python 的打包生态系统。对它的兴趣只可能是历史原因,事实上,Python。包,可以让你深入了解打包生态系统,并且有助于你使用PyPI 上可用的第三方代码。实践的权威信息来源。你可以将它当作关于打包的最佳信息来源,也可以当作本章的补充。

2024-04-23 09:11:45 206

原创 Python从小白到高手实现系列六百八十九:pep8 和flake8

pep8 这个工具只有一个目的:它仅提供对PEP 8 代码约定的风格检查。pep8 的输出比PyLint 更简单,也更容易解析,所以如果你想要与一些连续集成解决方案(例。与Pylint 的输出的主要区别在于其长度。的主要区别,后者具有许多额外的功能。感兴趣的程序员来说,这是最佳选择,不需要任何额外的工具配置(像Pylint 那样)。警告,例如未使用的变量、太长的函数名称或文档字符串缺失。它也不会给出任何评分。风格指南,介绍了一些命名建议,可以让你以后的代码更加明确;任何对风格指南的违背—即使是最小的违。

2024-04-23 09:11:11 105

原创 Python从小白到高手实现系列六百八十八:Pylint

要想对Pylint 进行微调,第一件要做的事就是,使用-generate-rcfile 选项在项。注意,Pylint 可能会给出不好的评分或抱怨。除了检查是否遵守某种任意的编码标准,Pylint 还可以给出有关整体代码质量的额外。是可调节的,所以如果你的团队使用一些与默认不同的命名和编码约定,你可以轻松配置。重要的是要知道,有些规则是任意的,不能轻易应。Pylint 只是一个工具,指出可能的改进之处。Pylint 的实际输出要更长一些,这里只截取了其中一部分。• 缺失的函数、方法或类的文档字符串。

2024-04-23 09:10:33 344

原创 Python从小白到高手实现系列六百八十七:类的名称

_init__模块也可以用于将一些API 放回顶层,因为它不会影响使用,但有助于将代码。• pep8 和flake8:它们是小型的代码风格检查器,也是包装器,添加了一些更有用的。但要注意,这可能会增加循环依赖的可能性,并且在__init__模块中添加的代码将被。模块和包的名称应体现其内容的目的。类的名称必须简明、精确,并足以使人理解类的作用。如果一个模块开始变得复杂,并且包含许多类,那么好的做法是创建一个包并将模块。最重要的是要和类属性保持一致。前面的约定和实践的一部分可以使用下列工具来控制和处理。

2024-04-23 09:10:02 269

原创 Python从小白到高手实现系列六百八十六:小心使用*args 和**kwargs 魔法参数

args 和**kwargs 参数可能会破坏函数或方法的鲁棒性。它们会使签名变得模糊,args 或**kwargs 不同,因为它可以提供能够操作数值并且能够独立发展的内部。如果*args 被用于处理元素序列(在函数中以相同方式处理),那么要求传入唯一的。签名的函数的装饰器,它是不可或缺的。如果参数列表变得很长而且很复杂,那么添加魔法参数是很吸引人的。另一种有趣的方法是创建一个容器类,将多个相关参数分组以提供执行上下文。魔法参数有时是无法避免的,特别是在元编程中。是一个脆弱的函数或方法,应该被分解或重构。

2024-04-23 09:09:31 374

原创 Python从小白到高手实现系列六百八十五:参数的最佳实践

这种检查参数的方法是契约式设计(Design by Contract,DbC,参见http://en.wikipedia.org/这可以通过3 个简单的规则来实现。函数和方法的签名是代码完整性的保证,它们驱动函数和方法的使用并构建其API。让我们来关注一个遵循TDD 方法的代码库,它向正确的方向发展,每当出现新的缺陷。当它以正确的方式完成时,测试中的断言列。如果每个函数都有一个固定的、定义明确的参数列表,那么代码的鲁棒性会更好。如果库中的代码被外部元素使用,那么进行断言可能是有用的,因为传入的数据可能。

2024-04-23 09:08:54 352

原创 Python从小白到高手实现系列六百八十四:避免通用名称

trash(垃圾箱)或dumpster(垃圾桶),因为这正是他们的队友最终对这些模块的处理方式。堆不相关的、质量非常差的代码片段,其大小呈指数增长。这样做的原因是它们的含义模糊、模棱两可,且没有向实际名称中添加任何信息。还有许多包的名称应该避免。但现实表明,在许多情况下,它们都会变为危险的结构反模式,并且迅速增长。在大多数情况下,更多的小模块几乎总是更好,即使内容很少,但名称可以很好地反。尽量使用原创的名称,即使是上下文的局部名称。使用上下文中已经存在的名称是不好的做法,因为它会导致阅读代码时—特别是调。

2024-04-23 09:08:10 221

原创 Python从小白到高手实现系列六百八十三:类

如果一个元素保存的是布尔值,is 和has 前缀提供一种自然的方式,使其在命名空。如果模块是包的私有模块,则添加一个前缀下划线。也在命名空间的构建中具有重要的作用,从而也影响代码可读性。类名称始终采用驼峰式命名法,如果它们是模块的私有类,还可能有一个前缀下划线。如果一个元素保存的是集合变量,那么使用复数形式是一个好主意。如果一个变量保存的是映射,那么你应该尽可能使用显式名称。除了特殊模块__init__之外,模块名称都使用小写,不带下划线。包名称遵循同样的规则,因为它的表现就像是更加结构化的模块。

2024-04-23 09:07:38 204

原创 Python从小白到高手实现系列六百八十二:特殊方法

特殊方法(https://docs.python.org/3/reference/datamodel.html#special-method-names)以双下划线开始和结束,常规的方法不应该使用这种约定。有些开发者曾经将其称为dunder方法,作为双下划线(double-underscore)的合成词。它们可用于运算符重载、容器定义等方面。

2024-04-23 09:07:02 210

原创 Python从小白到高手实现系列六百八十一:函数和方法

些模块(例如threading)而言,你可以访问使用混合大小写(mixedCase)的旧的函数。这样的大型项目而言,这么做并不可行。关于这个主题的更多信息,许多年前在Python-Dev 邮件列表中出现过一个有趣的讨论,如变量、函数和方面的混合大小写)作为它自己的编码标准的一部分。还值得注意的是,Twisted 项目的开发人员采用一种完全不同的方法来解决这个问题。全兼容,因为它特别强调,在项目内的一致性比遵守PEP 8 风格指南要更加重要。保某些基类隐式地避免子类中的冲突,特别是在多重继承的上下文中。

2024-04-23 09:06:31 279

原创 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 544

原创 Python从小白到高手实现系列六百七十九:超越PEP 8—团队的风格指南

体现PEP 8 的官方规则。要记住,比遵守PEP 8 更重要的是项目内的一致性。尽管PEP 8 提供了一套全面的风格指南,但仍为开发者留有一些自由,特别是在嵌套。此外,在某些情况下,对于没有定义风格指南的一些老项目,严格遵守PEP 8 可能在。这样的项目仍然可以从正式发布的编码约定中受益,即使这些约定中没有。使用常量的另一个好的做法是,将它们集中放在使用它们的模块顶部,如果它们要用。外的风格规则,最好的做法就是正式发布某种文件供所有团队成员使用。用,而不在代码主体中使用,所以这种冗长的名称并不会令人厌烦。

2024-04-23 09:05:22 349

原创 Python从小白到高手实现系列六百七十八:选择好的名称

如果你想接受来自其他程序员的任何协作,即使你对最佳代码风格指南有不同的看法,那么也应该坚持遵守PEP 8。而且,如果整个项目的代码库处于成熟的开发状态,那么对其重新调整风格(restyling)与代码布局有关的细节等基本规则之外,PEP 8 还介绍了大部分代码库所遵循的命名约定。本节给出了这一PEP 的简要总结,并进一步给出了每种元素的命名最佳实践指南。对于新人来说,代码更容易阅读,因为它的。例如,内置类型的使用是很自然的,其设计。伤的事实,但为了不失去贡献者,你最终可能还是会被迫与这种风格保持一致。

2024-04-23 09:04:41 230

原创 Python从小白到高手实现系列六百七十七:使用代码生成模式的项目

很难找到一个真正可用的库的实现,它依赖代码生成模式,而又不仅是一项实验或简单的概念证明。造成这种情况的原因是显而易见的,如下所示。• 对exec()和eval()函数必要的担心,因为不负责任的使用可能会造成真正的灾难。• 成功的代码生成非常困难,因为它需要对语言特性的深入理解和优异的通用编程技能。尽管有这些困难,但仍有一些项目成功地应用了这种方法,或者提高了性能,或者实现了其他方法无法实现的事情。(1)falcon 的编译路由器。

2024-04-23 09:04:04 813

原创 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 365

原创 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 255

原创 Python从小白到高手实现系列六百七十四:元类的使用

虽然类的调用签名相当严格,但Python 并不强制要求返回参数的类型。这是可能的,但那样的解决方法可能不会这么好用。任意类型的类时,这可能也会降低代码的鲁棒性。类已经实现了一个有冲突的元类,那么你可能会遇到不好的交互。它通常有许多复杂的解决方法,并不容易理解和掌握,但最终来看,其他程序员。但它可以作为元类关键字参数包含在类定义中,而且这不会引发任何问题,虽然这么做没。一旦掌握了元类,它是一种非常强大的特性,但总是会使代码更加复杂。通常来说,元类也可以用其他更简单的方法来代替,但有些情况下,没有元类可能很。

2024-04-22 09:29:10 241

原创 Python从小白到高手实现系列六百七十三:Python 3 中新的元类语法

元类并不是新的Python 特性,从Python 2.2 版开始就一直都有。不过它的语法发生了重大变化,这种变化既不向后兼容也不向前兼容。新的语法如下所示:pass在Python 2 中,其写法必须是这样的:= typePython 2 的class 语句不接受关键字参数,所以Python 3 定义元类的语法会在导入时引发SyntaxError 异常。仍然可以编写在两个Python 版本中都能运行的元类代码,但需要做一些额外工作。

2024-04-22 09:28:40 851

原创 Python从小白到高手实现系列六百七十二:元类

现在第一个位置参数的命名约定为cls,说明它已经是一个创建好的类对象(元类的实例),而不是一个元类对象。name、bases 和namespace 参数的含义与前面介绍的type()调用中的参数相同,• bases:这是父类的列表,将成为__bases__属性,并用于构造新创建的类的MRO。然是type 类的子类(参见图3-4),因为如果不是的话,这个类将在继承方面与其他的类。metaclass 参数的值通常是另一个类对象,但它可以是任意可调用对象,只要接受。并不常见,但其含义与普通类中的含义相同。

2024-04-22 09:28:07 398

原创 Python从小白到高手实现系列六百七十一:使用__new__()方法覆写实例创建过程

特殊方法__new__()是一种负责创建类实例的静态方法。它很特殊,所以无需使用staticmethod 装饰器将其声明为静态方法。(cls, [,…])方法的调用优先于__init__()初始化方法。

2024-04-22 09:27:37 244

原创 Python从小白到高手实现系列六百七十:装饰器— 一种元编程方法

下面是一个类装饰器的例子,修改__repr__()方法并返回缩短的可打印对象表示,缩短后。Python 有一个不太为人所知的语法特性,就是类装饰器。不幸的是,这个问题不能用第2 章“(4)保存内省的装饰器”一节介绍的方法(使用额外。虽然有这样的警告,但类装饰器仍然是对流行的混入(mixin)类模式的一种简单又轻。复杂的操作,根据原始函数的实现方式来执行内省并给出不同的结果。唯一的区别在于它的返回值是一个类,而不是函数对象。在类装饰器中这样使用闭包的主要缺点是,生成的对象不再是被装饰的类的实例,而是在。

2024-04-22 09:27:02 331

原创 Python从小白到高手实现系列六百六十九:槽

属性来为指定的类设置一个静态属性列表,并在类的每个实例中跳过__dict__字典的创建过程。第一种方法专注于语言对基本元素(例如函数、类或类型)内省的能力与对其实时创建或修改的能力。语言的语法,甚至创建你自己的领域特定语言(Domain Specific Language,DSL)二种方法当然更加复杂,也更难以处理,但可以用来完成不同凡响的任务,例如扩展Python。这里我们也精心选择了不同的工具,允许程序员直接处理代码,或者是原始的纯文。利用这一定义,是我们可以区分Python 元编程的两种主要方法。

2024-04-22 09:26:15 267

原创 Python从小白到高手实现系列六百六十八:property

如果需要修改property 的工作方式,推荐在派生类中覆写所有的property。基于上述原因,创建property 的最佳语法是使用property 作为装饰器。property 的setter 行为的话,通常意味着也需要修改getter 的行为。property 提供了一个内置的描述符类型,它知道如何将一个属性链接到一组方法上。不幸的是,上面的代码有一些可维护性的问题。方法,而不是依赖父类的实现。在大多数情况下,这是唯一的选择,因为如果修改了。是利用当前类的方法实时创建,不会使用派生类中覆写的方法。

2024-04-22 09:25:33 339

原创 Python从小白到高手实现系列六百六十七:现实例子—延迟求值属性

描述符的一个示例用法就是将类属性的初始化延迟到被实例访问时。如果这些属性的初始化依赖全局应用上下文的话,那么这一点可能有用。另一个使用场景是初始化的代价很大,但在导入类的时候不知道是否会用到这个属性。这样的描述符可以按照如下所示来实现:defdef’)else:’)下面是示例用法:cached!PyPI上OpenGL的官方Python库PyOpenGL用到了相似的技术来实现lazy_property,

2024-04-22 09:25:03 524

原创 Python从小白到高手实现系列六百六十六:描述符

实现了__get__()和__set__()的描述符被称为数据描述符(data descriptor)。实现了__get__(),那么就被称为非数据描述符(non-data descriptor)。在每次属性查找中,这个协议的方法实际上由对象的特殊方法__getattribute__()换句话说,数据描述符优先于__dict__查找,而__dict__查找优先于非数据描述符。性时,都会调用描述符的__get__()方法并返回它的值,每次对这个属性赋值时都会调用。它是一个类,定义了另一个类的属性的访问方式。

2024-04-22 09:24:33 251

原创 Python从小白到高手实现系列六百六十五:最佳实践

在Python 2 中,没有指定任何祖先的类被认为是旧式类。这并不是真正的锁定(real lock),因为可以通过其组合名称来访问该属性。• super 的使用必须一致:在类的层次结构中,要么全部用super,要么全不用。为了避免前面提到的所有问题,在Python 在这个领域取得进展之前,我们需要考虑以。Python 提供这一特性是为了避免继承中的名称冲突,因为属性被重命名为以类名为前。这不会调用任何名称修饰的算法,而只是说明这个属性是该类的私。一特性可用于保护某些属性的访问,但在实践中,永远不应使用。

2024-04-22 09:23:52 261

原创 Python从小白到高手实现系列六百六十四:使用super 易犯的错误

在Python 中,基类不会在__init__()中被隐式地调用,所以。如果使用了多重继承的层次结构,那么使用super 是非常危险的,不幸的是,你无法确定外部包的代码中是否使用了super()。使用super 的另一个问题是初始化过程中的参数传递。用到整个类的层次结构中。能很枯燥,但作为奖励,你可以了解这个包的代码质量,并对它的实现有了进一步理解。不过这是一种很糟糕的解决方法,因为它使得所有构造函数都接受任何类型的参数。中显式地使用特定类的__init__()调用,但这又会导致第一种错误。

2024-04-22 09:23:21 223

原创 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 284

原创 Python从小白到高手实现系列六百六十二:访问超类中的方法

注意,零参数的super()形式也可用于被classmethod 装饰器装饰的方法。super 的简化形式(不传入任何参数)可以在方法内部使用,但super 的使用并不。前面提到的使用实例很容易理解,但如果面对多重继承模式,super 将变得难以使用。最后,关于super 还有很重要的一点需要注意,就是它的第二个参数是可选的。在代码中需要调用给定实例的超类方法的任何地方都可以使用它。super 是一个内置类,可用于访问属于某个对象的超类的属性。的方法中无参数调用的super()被看作是仅定义了第一个参数。

2024-04-22 09:22:01 321

原创 Python从小白到高手实现系列六百六十一:语法最佳实践—类级别以上

怎样,知道两种模型在Python 2 中的工作原理仍是很重要的,因为这有助于你移植旧代码。这也是为什么本章包含关于 Python 2 旧特性的大量内容,尽管本书针对的是最新版的。现在,我们将向你展示一个名为distinctdict 类的代码如下,它就使用了这种方。的速度更快,代码更整洁。当需要实现与某个内置类型具有相似行为的类时,最好的方法就是将这个内置类型子类化。类型的共同祖先,也是所有没有显式指定父类的用户自定义类的共同祖先。如果查看现有代码,你可能会发现许多类都是对内置类型的部分实现,它们作为子类。

2024-04-22 09:21:27 284

原创 Python从小白到高手实现系列六百六十:可能的用法

https://docs.python.org/3/whatsnew/3.0.html)称,此功能的目的是“鼓励通过元类、装饰器或框架。分重点介绍了与Python 序列和集合相关的语法特性,也讨论了字符串和字节相关的序列。虽然函数注解存在的时间和Python 3 一样长,但仍然很难找到任一常见且积极维护的。本章介绍了不直接与Python 类和面向对象编程相关的多个最佳语法实践。包,将函数注解用作类型检查之外的功能。○ 让IDE 显示函数接受和返回的类型。○ 函数重载/通用函数。○ 参数和返回值的文档。

2024-04-22 09:20:56 138

原创 Python从小白到高手实现系列六百五十九:你可能还不知道的其他语法元素

定义好之后,注解可以通过函数对象的__annotations__属性获取,它是一个字典,里介绍一个简单的技巧,可以帮你记住它的用法:for 循环之后else 子句的含义是“没。自定义函数使用的类型的完全可选的元信息,但事实上,它并不局限于类型提示,而且在。可以为函数定义注解,并在运行时获取这些注解,但仅此而已。如上所述,参数注解的定义为冒号后计算注解值的表达式。任何表达式都可以用作注解,其位置靠近默认参数,这样可以创建一些迷惑人的函数。不过,注解的这种用法只会让人糊涂,没有任何其他作用。

2024-04-22 09:20:17 365

原创 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 272

原创 Python从小白到高手实现系列六百五十七:上下文管理器—with 语句

为了确保即使在出现错误的情况下也能运行某些清理代码,try…finally 语句是很有用的。这一语句有许多使用场景,例如:• 关闭一个文件。• 释放一个锁。• 创建一个临时的代码补丁。• 在特殊环境中运行受保护的代码。with 语句为这些使用场景下的代码块包装提供了一种简单方法。即使该代码块引发了异常,你也可以在其执行前后调用一些代码。例如,处理文件通常采用这种方式:try:… continue…

2024-04-22 09:18:55 515

闹钟(ArkTS)源代码

1、展示指针表盘或数字时间。 2、添加、修改和删除闹钟。 3、展示闹钟列表,并可打开和关闭单个闹钟。 4、闹钟到设定的时间后弹出提醒。 5、将闹钟的定时数据保存到轻量级数据库。 Canvas:提供画布组件,用于自定义绘制图形。 CanvasRenderingContext2D:使用RenderingContext在Canvas组件上进行绘制,绘制对象可以是矩形、文本、图片等。 后台代理提醒:开发应用时,开发者可以调用后台提醒发布的接口创建定时提醒,包括倒计时、日历、闹钟三种提醒类型。使用后台代理提醒能力后,应用可以被冻结或退出,计时和弹出提醒的功能将被后台系统服务代理。本应用中主要使用到后台代理提醒的两个接 publishReminder 发布一个后台代理提醒,使用callback方式实现异步调用,该方法需要申请通知弹窗Notification.requestEnableNotification后才能调用。 cancelReminder 取消指定id的提醒,使用callback方式实现异步调用。

2024-02-04

实例:新闻数据加载(ArkTS)-源码

日常生活中我们使用应用程序看新闻、发送消息等,都需要连接到互联网,从服务端获取数据。例如,新闻应用可以从新闻服务器中获取最新的热点新闻,从而给用户打造更加丰富、更加实用的体验。 Codelab是基于ArkTS的声明式开发范式实现的样例,主要介绍了数据请求和touch事件的使用。包含以下功能: 数据请求。 列表下拉刷新。 列表上拉加载。 List组件:列表包含一系列相同宽度的列表项。 Tabs:通过页签进行内容视图切换。 TabContent:仅在Tabs中使用,对应一个切换页签的内容视图。 数据请求:提供HTTP数据请求能力。 触摸事件onTouch:触摸动作触发调用该方法。

2024-02-01

Web组件抽奖案例(ArkTS)-源码

Codelab是基于ArkTS的声明式开发范式的样例,主要介绍了Web组件如何加载本地和云端H5小程序。所加载的页面是由HTML+CSS+JavaScript实现的完整小应用。样例主要包含以下功能: Web组件加载H5页面。 ArkTS和H5页面交互。 Web:提供具有网页显示能力的Web组件。 runJavaScript:异步执行JavaScript脚本,并通过回调方式返回脚本执行的结果。 onConfirm:网页调用confirm()告警时触发此回调。本篇Codelab用于回显抽奖结果。

2024-02-01

ArkTS 简易视频播放器 示例源码

在手机、平板或是智慧屏这些终端设备上,媒体功能可以算作是我们最常用的场景之一。无论是实现音频的播放、录制、采集,还是视频的播放、切换、循环,亦或是相机的预览、拍照等功能,媒体组件都是必不可少的。以视频功能为例,在应用开发过程中,我们需要通过ArkUI提供的Video组件为应用增加基础的视频播放功能。借助Video组件,我们可以实现视频的播放功能并控制其播放状态。常见的视频播放场景包括观看网络上的较为流行的短视频,也包括查看我们存储在本地的视频内容。 Video组件的原生控制器样式相对固定,当我们对页面的布局色调的一致性有所要求,或者在拖动进度条的同时需要显示其百分比进度时,原生控制器就无法满足需要了。如下图右侧的效果需要使用自定义控制器实现,接下来我们看一下自定义控制器的组成。 自定义控制器容器内嵌套了视频播放时间Text组件、滑动器Slider组件以及视频总时长Text组件 3个横向排列的组件,其中Text组件在之前的基础组件课程中已经有过详细介绍,这里就不再进行赘述。需要强调的是两个Text组件显示的时长是由Slider组件的onChange(callback: (value: n

2024-01-31

ArkTS-管理组件状态(目标管理)源码示例

在应用中,界面通常都是动态的。下图所示,在子目标列表中,当用户点击目标一,目标一会呈现展开状态,再次点击目标一,目标一呈现收起状态。界面会根据不同的状态展示不一样的效果。 ArkUI作为一种声明式UI,具有状态驱动UI更新的特点。当用户进行界面交互或有外部事件引起状态改变时,状态的变化会触发组件自动更新。所以在ArkUI中,我们只需要通过一个变量来记录状态。当改变状态的时候,ArkUI就会自动更新界面中受影响的部分。 在组件内使用`@State`装饰器来修饰变量,可以使组件根据不同的状态来呈现不同的效果。若当前组件的状态需要通过其父组件传递而来,此时需要使用`@Prop`装饰器;若是父子组件状态需要相互绑定进行双向同步,则需要使用`@Link`装饰器。使用`@Provide`和`@Consume`装饰器可以实现跨组件层级双向同步状态。 在实际应用开发中,应用会根据需要封装数据模型。如果需要观察嵌套类对象属性变化,需要使用`@Observed`和`@ObjectLink`装饰器,因为上述表格中的装饰器只能观察到对象的第一层属性变化。`@Observed`和`@ObjectLink`装饰

2024-01-31

自定义下拉刷新动画(ArkTS) 示例代码

属性动画,是最为基础的动画,其功能强大、使用场景多,应用范围较广。常用于如下场景中: 一、页面布局发生变化。例如添加、删除部分组件元素。 二、页面元素的可见性和位置发生变化。例如显示或者隐藏部分元素,或者将部分元素从一端移动到另外一端。 三、页面中图形图片元素动起来。例如使页面中的静态图片动起来。 简单来说,属性动画是组件的通用属性发生改变时而产生的属性渐变效果。如下图所示,其原理是,当组件的通用属性发生改变时,组件状态由初始状态逐渐变为结束状态的过程中,会创建多个连续的中间状态,逐帧播放后,就会形成属性渐变效果,从而形成动画。 属性动画的使用方式也非常简单,只需要给组件(包括基础组件和容器组件)添加animation属性,并设置好参数

2024-01-29

构建多种样式的弹窗 示例代码

在应用中,界面通常都是动态的。如图1所示,在子目标列表中,当用户点击目标一,目标一会呈现展开状态,再次点击目标一,目标一呈现收起状态。界面会根据不同的状态展示不一样的效果。 ArkUI作为一种声明式UI,具有状态驱动UI更新的特点。当用户进行界面交互或有外部事件引起状态改变时,状态的变化会触发组件自动更新。所以在ArkUI中,我们只需要通过一个变量来记录状态。当改变状态的时候,ArkUI就会自动更新界面中受影响的部分。 ArkUI框架提供了多种管理状态的装饰器来修饰变量,使用这些装饰器修饰的变量即称为状态变量。 在组件内使用@State装饰器来修饰变量,可以使组件根据不同的状态来呈现不同的效果。若当前组件的状态需要通过其父组件传递而来,此时需要使用@Prop装饰器;若是父子组件状态需要相互绑定进行双向同步,则需要使用@Link装饰器。使用@Provide和@Consume装饰器可以实现跨组件层级双向同步状态。

2024-01-29

ArkUI 开发框架-常用组件与布局示例代码

示例代码中将barPosition的值设置为BarPosition.End,使页签显示在底部。使用@Builder修饰TabBuilder函数,生成由Image和Text组成的页签。同时也给Tabs组件设置了TabsController控制器,当点击某个页签时,调用changeIndex方法进行页签内容切换。最后还需要给Tabs添加onChange事件,Tab页签切换后触发该事件,这样当我们左右滑动内容视图的时候,页签样式也会跟着改变。参考Tabs组件的更多属性和参数的使用,可以参考API:Tabs。@Builder装饰器的使用,可以参考:@Builder。

2024-01-26

UIAbility内页面间的跳转案例示例代码

例如在文档应用中,可以为不同的文档实例内容绑定不同的Key值。每次新建文档时,可以传入一个新的Key值(例如可以将文件的路径作为一个Key标识),此时AbilityStage中启动UIAbility时都会创建一个新的UIAbility实例;当新建的文档保存之后,回到桌面,或者新打开一个已保存的文档,回到桌面,此时再次打开该已保存的文档,此时AbilityStage中再次启动该UIAbility时,打开的仍然是之前原来已保存的文档界面。以如下步骤所示进行举例说明。打开文件A,对应启动一个新的UIAbility实例,例如启动UIAbility实例1。在最近任务列表中关闭文件A的任务进程,此时UIAbility实例1被销毁,回到桌面,再次打开文件A,此时对应启动一个新的UIAbility实例,例如启动UIAbility实例2。回到桌面,打开文件B,此时对应启动一个新的UIAbility实例,例如启动UIAbility实例3。回到桌面,再次打开文件A,此时仍然启动之前的UIAbility实例2,因为系统会自动匹配UIAbility实例的Key值,如果存在与之匹配的Key,则会启动与之绑定的UI

2024-01-26

ArkTS 待办列表示例代码下载

应用界面是由一个个页面组成,ArkTS是由ArkUI框架提供,用于以声明式开发范式开发界面的语言。声明式UI构建页面的过程,其实是组合组件的过程,声明式UI的思想,主要体现在两个方面:描述UI的呈现结果,而不关心过程状态驱动视图更新类似苹果的SwiftUI中通过组合视图View,安卓Jetpack Compose中通过组合@Composable函数,ArkUI作为HarmonyOS应用开发的UI开发框架,其使用ArkTS语言构建自定义组件,通过组合自定义组件完成页面的构建。 ArkTS通过struct声明组件名,并通过@Component和@Entry装饰器,来构成一个自定义组件。使用@Entry和@Component装饰的自定义组件作为页面的入口,会在页面加载时首先进行渲染。

2024-01-26

HarmonyOS应用开发者基础认证高精度题库

HarmonyOS应用开发者基础认证高精度题库,内含40题主观题,100%精准无误。 内含DevEco Studio,ArkTS,ArkUI,预览器,模拟器,SDK等HarmonyOS应用开发的关键概念,具备基础的应用开发能力后,获得HarmonyOS应用开发者基础认证。本次训练营完全免费,不涉及任何费用。

2023-12-27

基于Amazon Serverless 构建咖啡机零售创新应用手摸手教程手册

通过实验用户能了解到 Amazon Step Functions 是如何非常便利的编排业务逻辑的,也能了解到 Amazon EventBridge 的整体发布和管理事件的过程,并最终如何通过 Amazon DynamoDB 与Amazon Cognito 来实现零售创新应用场景的完整业务流构建。 零售创新应用2小时内开门!祝你好运!(本实验整体流程预计80分钟-120分钟) 零售创新应用是如何运作的? 零售创新应用流程如下: 1、头顶显示器显示一个 QR 码,每 5 分钟更改一次。客户扫描此 QR 码以使用他们的移动设备下订单。二维码适用于 5 分钟内的 10 杯饮品,一旦没有更多饮品,二维码就会从屏幕上消失。这有助于防止商家被订单淹没! 2、客户在二维码加载的网络应用程序上下订单。后端验证订单,创建订单号,并将其提供给商家。 3、商家看到订单出现在他们自己的应用程序上。他们可以更改订单的状态,以指示订单的制作时间、完成时间或是否需要取消订单。 4、客户在其移动设备上看到所有商家更新。头顶上的监视器还显示即将到来和已完成的饮料的状态。 接下来您将创建将现有前端与后端无服务器

2023-06-07

基于Amazon KVS与 Amazon Rekognition Streaming Video Events实时智能视频检测的

在居家安防监控领域,基于实时视频的移动检测,发现监控环境中人、宠物、包裹等的出现,并且能实时地将检测结果通知给身处任何地方的用户是其重要的应用场景之一。但在这一场景的技术实现中面临如下的挑战:一是基于摄像头的视频检测通知,存在大量由于风、雨、移动的车等并非用户关注的事件误报,严重影响用户的使用体验。二是实现这一方案涉及的技术领域与复杂度很高,如设备端事件检测和触发、视频编解码处理、视频存储、机器视觉等,需要团队具备较强的技术和专业能力。本实验将以最小化原型,体现由Raspberry Pi加摄像头作为安防设备端,并使用Amazon KVS和Amazon Rekognition Streaming Video Events来解决上述挑战,实现实时智能视觉识别。 Amazon 提供物联网 (IoT) 服务和解决方案来连接和管理数十亿台设备。连接、存储和分析工业、家居消费、商业和汽车业工作负载的 IoT 数据。 使用最为完备的 IoT 服务套组加速创新,借助 Amazon IoT 不断扩展、快速行动,并节省成本。从安全设备连接到管理、存储和分析,Amazon IoT 能够为您提供广泛而深入

2023-06-07

Amazon Neptune ML 图神经网络快速构建 与图神经⽹络关联预测 手摸手动手实例

概括介绍了 Amazon Neptune ML 的功能,以及如何在属性图形中用它来推断缺失的数据。若要运行该教程,您只需要准备一个启用了 Neptune ML 功能的 Amazon Neptune Cluster,并在同一个区域中准备一个 S3 存储桶。 注意:除了 Neptune 集群的成本外,本教程会额外产生每小时约 2-3 美元的成本,大约需要 30 分钟可完成所有操作。 图形和图形数据的主要用途是使用数据中的值和连接提供新颖的见解。然而图形数据的一个常见问题在于,此类数据通常并不完整,这意味着其中包含缺失的属性值或连接。虽然不完整的数据并非图形独有的问题,但我们往往希望以互联的方式使用此类数据,这种本质需求使得这种问题会产生更大的影响,通常会导致无效的遍历和/或错误的结果。Neptune ML 通过将机器学习(ML)模型集成到实时图形遍历过程中,借此预测/推断缺失的图形元素(例如属性和连接),有效解决了这个问题。 Neptune ML 是 Amazon Neptune 的一项功能,它使用户能够在 Amazon Neptune 中自动创建、管理并使用图形神经网络(GNN)机器

2023-06-07

腾讯云音视频通话分享 PPT

实时音视频(Tencent RTC)是腾讯基于21年来在网络与音视频技术上的深度积累,以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,致力于帮助开发者快速搭建低成本、低延时、高品质的音视频互动解决方案。 即时通信(Tencent Cloud Instant Messaging,IM)提供全球互通的聊天API,多平台 SDK 和 UIkit 组件助力您的APP和网站快速实现单聊、群聊、聊天室、系统通知等能力。 TUIKit 是基于腾讯云 IM、TRTC SDK 的一款 UI 组件库,它提供了一些通用的 UI 组件,包含会话、聊天、搜索、关系链、群组、音视频通话等功能。 基于 UI 组件您可以像搭积木一样快速搭建起自己的业务逻辑。 TUICallKit 是腾讯云推出一款音视频通话 UI 组件,通过集成该组件,您只需要编写几行代码就可以为您的 App 添加音视频通话功能,并且支持离线唤起能力。 TUICallKit 支持 Android、iOS、Web、微信小程序、Flutter、UniApp 等多个开发平台

2023-06-06

音视频 - 在线 K 歌场景PPT

产品介绍,行业现状,技术架构,TUIKit 介绍等章节 文件内包含各种,软件架构图及案例图等。 TUIkit 是腾讯云音视频团队在5000+客户的服务积累中,结合业内主流的音视频场景,提炼出的开源解决方案,包含视频通话组件、直播组件、视频房间组件等多个客户端音视频组件,可以帮助开发者快速搭建诸如通话、客服、直播、语聊、教育等场景解决方案。 TUIKaraoke 是一个开源的在线 K 歌 UI 组件,您只需要编写几行代码就可以为您的应用添加在线 K 歌场景,体验 K 歌、麦位管理、收发礼物、文字聊天等 TRTC 在 KTV 场景下的相关能力。

2023-06-06

利用开源项目 Crane 搭建测试集群,检测集群成本及利用率实战手册

压缩包内包含:本地安装应用程序,及实战手册文档,手把手带你搭建测试集群及集群的可视化检测。 随着云原生技术的发展,越来越多的公司正在选择将应用运行在云上或者自建的 Kubernetes 集群上,但是许多机构的调研发现,绝大多数的用户集群资源利用率并不高,浪费严重。本次训练营将会演示如何快速搭建一个 Kubernetes+Crane 环境,以及如何基于 Crane 优化你的集群和应用。 Kubernetes是用于自动部署、扩展和管理“容器化应用程序”的开源系统。该系统由Google设计并捐赠给Cloud Native Computing Foundation来使用。 它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。 它支持一系列容器工具,包括Docker等。

2023-06-06

降本之源-云原生成本管理白皮书

云原生使组织能够在现代云环境(例如公共云、私有云和混合云) 中构建和运行可扩展的应用程序,更快地创新并使企业能够更敏捷地对市场作出反应 凭借弹性计算、自动扩展、计量计费和按使用付费模型等功能,云原生计算可帮助组织摆脱昂贵的永远在线的基础架构,并将这些节省用于新功能开发。 冗余、容错、松散耦合的服务和云原生架构自动化的自动恢复导致的弹性增加和停机时间减少也可能导致间接成本节约。使用容器和微服务构建应用程序的一个巧妙之处在于,云原生应用程序使开发人员可以更轻松地访问和重用为早期项目创建的组件。 这有几个云原生的优点,可以降低开发成本并制作更好的应用程序: 降低开发过程的复杂性: 开发人员可以将更多时间花在项目的细节上,而不是构建通用框架上。它还允许在更短的时间内开发更复杂的应用程序。 缩短上市时间:更快的交付意味着更快的客户更满意,这也意味着抓住时间敏感机会的潜力。 简化测试:经过审查的微服务出现的问题更少,减轻了管道后期的负载。当开发人员知道服务有效时,他们所要做的就是设计兼容性。 模块化设计:模块化设计使外观和功能的标准化更容易。拥有多个应用程序或服务的公司可以利用这一点来降低客户的学

2023-06-06

超低延时直播(音视频)白皮书

上世纪末,流媒体直播技术起始于传统广电行业发展。早期的媒体协议基于 MPEG-TS(Mpeg Transport Stream格式传输于专用网络环境。随着互联网技术的发展,直播技术逐步应用于包括泛互、教育、广电等多个行业。 我国的网络直播起始于 20 世纪初,早期主要是娱乐秀场和实时游戏赛事场景,逐渐成为一种新兴的网络社交与互动方式,网络直播平台也成为了一种崭新的社交媒体。网络直播相比广播、电视、互联网视频,以及近几年广泛使用的微信微博,有着独一无二的媒介特性。随着新政策的引导及资本市场的追捧,直播行业首先在娱乐、游戏直播等行业经历了一次大规模增长,2020 年后,疫情爆发进一步促进了直播行业高速发展,正在全面赋能电商、旅游、文化传播等众多领域。 直播 中国网络直播产业起始于2005年,早期PC端直播主要集中在娱乐秀场、游戏赛事行业等。2015年以后,随着移动直播的兴起,直播产业逐步渗透到教育、电商等众多行业,直播平台、观众数量都呈现井喷式发展。时至今日,网络直播已经形成一个新的经济体系,成为当前互联网经济的重要组成部分,在网络文化内容供应、技术创新、商业模式创新的方面发挥了重要作用。

2023-06-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除