天天看点

蟒蛇神与小偷滑倒,9个实用技巧分享给你《中国风动画》《江子牙》刷屏背后,隐藏了中国动画100年的幕布"中国风动画"除了"哪个",这些良心国产动画也应该让更多人知道!《中国风动画》《雾山五行》大火,但很少有人知道其前身《一岁城玻璃心》中一个拿着十米刀的男人死了!

1

组织字符串输入

在编程过程中,整理用户输入的问题非常普遍。通常,将字符转换为小写或大写就足够了,有时您可以使用正则表达式模块"Regex"执行此操作。但是,如果问题很复杂,可能有更好的方法来解决它:

在此示例中,您可以看到空格字符"n"和"t"已替换为单个空格,并且"r"已被删除。

这只是一个非常简单的例子,我们可以更进一步,使用"unicodedata"包生成一个大型的重映射表,并使用其中的"combining()进行生成和映射"。

2

迭代器切片

如果对迭代器进行切片,则返回"TypeError",指示生成器对象未下标,但我们可以通过一个简单的方案来解决此问题:

我们可以使用"itertools.islice"来创建一个"islice"对象,该对象是生成所需项的迭代器。

注: 此操作将使用切片之前的所有生成器项,以及"islice"对象中的所有项。

3

跳过迭代对象的开头

有时,您必须处理以不需要的行(如注释)开头的文件。再一次,"itertools"提供了一个简单的解决方案:

此代码仅在初始注释部分之后打印。如果我们只想丢弃迭代对象的开头(本示例中开头的注释行),而不知道它将持续多长时间,这将非常有用。

4

仅包含关键字参数的函数 (kwargs)

当我们使用以下函数时,创建只需要关键字参数作为输入的函数以提供更清晰的函数定义是有帮助的:

如您所见,在关键字参数之前添加""可以解决问题。如果我们在""参数之前放置一些参数,它们显然是位置参数。

5

创建支持"with"语句的对象

例如,我们都知道如何使用"with"语句打开文件或获取锁,但是我们可以实现自己的上下文表达式吗?是的,我们可以使用"进入"和"退出"来实现上下文管理协议:

这是在Python中实现上下文管理的最常见方法,但有更简单的方法:

上面的代码使用上下文管理器的管理器修饰器实现内容管理协议。当输入 with 块时,执行 tag 函数的第一部分(在收益之前),然后执行 with 块,执行 tag 函数的其余部分。

6

使用"插槽"节省内存

如果您曾经编写过一个创建大量类实例的程序,您可能已经注意到您的程序突然需要大量内存。

这是因为Python使用字典来表示类实例的属性,这使得它速度很快,但在内存使用方面效率不高。通常,这不是一个严重的问题。但是,如果您的程序受到此严重影响,请尝试"插槽":

当我们定义"slots"属性时,Python没有使用字典来表示该属性,而是使用了一个小的固定大小的数组,这大大减少了每个实例所需的内存。

使用插槽有一些缺点:我们不能声明任何新属性,我们只能使用插槽上的现有属性。此外,具有"槽"的类不能使用多重继承。

7

限制"CPU"和内存使用

如果你不想优化程序的内存或CPU使用,而是想直接将其限制在一定数量,Python也有相应的库可以做:

如我们所见,在上面的代码片段中,包括设置最大CPU运行时间和最大内存使用限制的选项。

在限制 cpu 的运行时时,我们首先获取该特定资源的软限制和硬限制(RLIMIT_CPU),然后使用参数指定的秒数和先前检索到的硬限制来设置它们。

最后,如果 CPU 运行超出限制,我们将发出系统退出信号。在内存使用方面,我们再次检索软限制和硬限制,并使用带有"size"参数的"setrlimit"参数和先前检索到的硬限制进行设置。

8

控制可以/不能导入的内容

有些语言具有非常明显的导出成员的机制(变量、方法、接口)。

例如,在 Golang 中,仅导出以大写字母开头的成员。

但是,在Python中,所有成员都被导出(除非我们使用"all"):

在上面的代码中,我们知道只有"bar"函数被导出。同样,我们可以将"all"留空,以便不导出任何内容,从而在从此模块导入时导致"AttributeError"。

9

实现比较运算符的简单方法

为类实现所有比较运算符(如 lt、le、gt、ge)很麻烦。有没有更简单的方法来做到这一点?在这样的时候,"functools.total_ordering"是一个很好的帮手:

这是如何工作的?

我们使用"total_ordering"装饰器来简化类实例的排序过程。我们需要做的就是定义"lt"和"eq",它们是实现其余操作所需的最小操作集(这是装饰器所做的 - 为我们填写空白)。

10

结语

本文中提到的并非所有功能在日常Python编程中都是必要或有用的,但是其中一些功能可能会不时派上用场,并且它们可能会简化已经冗长且令人讨厌的任务。

同样重要的是要注意,所有这些功能都是Python标准库的一部分。在我看来,其中一些功能似乎不像标准库中包含的标准内容,所以当你用Python实现本文中提到的一些功能时,请先参考Python的标准库,如果你找不到你想要的功能,那可能只是因为你没有尝试找到它(如果你不这样做, 它确实存在于一些第三方库中)。

推荐:

<h1级"pgc-h-arrow-right"数据轨道"123">"中国风动画""江子牙"刷屏后面,隐藏在中国动画100年幕布中</h1>

<h1级"pgc-h-右箭头数据轨道"124">"中国风动画"除了"哪个",这些良心国产动画也应该让更多人知道!</h1>

<H1级"pgc-h-right-arrow"数据轨道"125">"中国风动画""雾山五线"大火,但很少有人知道其前身"老城玻璃心"中一个拿着十米刀的男人死了!</h1>

陈述

来源:51CTO,AI产业链联盟推荐阅读,不代表AI产业链联盟立场,转载请注明,如涉及版权问题,请联系我们删除或做相关处理!