python编程菜鸟教程,例解Python-Python编程快速入门践行指南

  python编程菜鸟教程,例解Python:Python编程快速入门践行指南

  关于Python中各种很酷的函数(比如变量解包,分部函数,枚举可迭代对象)的文章很多,但是说到Python还是有很多东西要讲的。在这里我会尽量展示一些我知道并使用的功能,在其他地方也没看到有人提到。让我们开始吧。

  这里需要注意的是,很多人在学习Python的过程中都会遇到各种各样的烦恼,如果没有人解答很容易就放弃了。为此,边肖构建了一个Python全栈免费问答.裙:七衣,九七七杠,五(数字的谐音)可在转换下找到。不懂的问题老司机来解决,还有最新的Python实用教程,不可避免。让我们互相监督,共同进步!

  清理字符串输入

  清理用户输入的问题几乎适用于你编写的所有程序。通常,将字符转换成小写或大写就足够了。有时,您可以使用Regex来做到这一点,但是对于复杂的情况,可能有更好的方法:

  在此示例中,您可以看到空白字符“\n”和“\t”已被替换为一个空格,而“\r”已被完全删除。这是一个简单的例子,但我们可以更进一步,使用unicodedata package及其combining()函数来生成和映射,从而生成一个更大的重映射表,我们可以用它来删除字符串中的所有重音符号。

  切片迭代器。

  如果您尝试对迭代器进行切片,将会得到一个TypeError,这表明生成器对象是不可索引的,但是有一个简单的解决方案可以解决这个问题:

  使用itertools.islice,我们可以创建一个islice对象,它是一个迭代器,将生成所需的项。请注意,这将消耗slice开始之前的所有生成器项目,以及islice对象中的所有项目。

  跳过可迭代对象的开头。

  有时,您必须处理以您不想要的可变行数(如注释)开头的文件。Itertools再次为这个问题提供了一个简单的解决方案:

  该代码片段只生成初始注释部分之后的行。如果我们只想丢弃iterable对象开头的一些项(在本例中是一些行),并且不知道有多少项,那么这个方法很有用。

  只有关键字参数的函数(kwargs)

  当使用如下函数时,创建只接受关键字参数的函数会有助于提供(强制)更多的清晰度:

  如您所见,这可以通过在关键字参数前放置一个*参数来轻松解决。如果我们把position参数放在*参数之前,很明显position参数也会存在。

  创建支持with语句的对象。

  例如,我们都知道如何使用with语句打开文件或获取锁,但我们可以实现自己的with语句吗?当然,我们可以使用__enter__和__exit__方法来实现上下文管理协议:

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

  上面的代码片段使用contextmanager管理器装饰器实现了内容管理协议。进入with块时,将执行tag函数的第一部分(yield之前),然后执行with块,最后执行tag函数的其余部分。

  使用__slots__来节省内存

  如果您曾经编写过创建大量类实例的程序,您可能会注意到您的程序突然需要大量内存。这是因为Python使用字典来表示类实例的属性,这样速度很快,但是内存效率不高,通常不是问题。然而,如果它成为你的程序的一个问题,你可以尝试使用__slots__:

  这里的情况是,当我们定义__slots__属性时,Python会使用一个小的固定大小的数组来代替字典来定义属性,这样就大大减少了每个实例所需的内存。使用__slots__ 3354也有一些缺点我们不能声明任何新的属性,只能在__slots__上使用。而且,带有__slots__的类不能使用多重继承。

  限制CPU和内存的使用

  如果你不想优化你的程序内存或CPU的使用,你只想把它限制在某个固定大小的内存,那么Python也有一个这样的库来做这件事:

  这里我们可以看到设置最大CPU运行时间和最大内存使用限制的两个选项。对于CPU限制,我们首先获取特定资源的软限制和硬限制(RLIMIT_CPU),然后使用参数指定的秒数和之前检索的硬限制来设置它。最后,我们注册信号,如果CPU时间超过限制,就会导致系统退出。对于内存,我们再次检索软限制和硬限制,并用带有size参数和检索到的硬限制的setrlimit设置它。

  控制什么可以导入,什么不可以导入。

  有些语言对于导出成员(变量、方法、接口)有非常明显的控制机制,比如Golang,其中只会导出以大写字母开头的成员。另一方面,在Python中,一切都可以导出,除非我们使用__all__:

  根据上面的代码片段,我们知道只有bar函数会被导出。同样,我们可以将__all__留空,这样当我们从该模块导入时,将不会导出任何内容,并且会导致AttributeError。

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

  考虑到目前比较运算符——__lt__ 、__le__、gt__、或__ge__,为一个类实现所有比较运算符是相当烦人的。但是如果有更简单的方法来实现呢?Functools.total_ordering派上用场:

  那么,这到底是怎么回事呢?Total_ordering decorator用于简化类实例的排序过程。我们只需要定义__lt__和__eq__,这是其余操作的映射所需的最小值,decorator会为我们填空。

  最后注意:很多人在学习Python的过程中会遇到各种各样的烦恼,如果没有人解答很容易就放弃了。为此,边肖构建了一个Python全栈免费问答.裙:七衣,九七七杠,五(数字的谐音)可在转换下找到。不懂的问题老司机来解决,还有最新的Python实用教程,不可避免。让我们互相监督,共同进步!

  本文中的文字和图片均来自互联网,有我自己的想法。它们仅用于学习和交流,没有商业用途。版权归原作者所有。如有问题,请及时联系我们进行处理。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: