iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python有哪些高效率技巧
  • 519
分享到

Python有哪些高效率技巧

2023-06-16 16:06:23 519人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容主要讲解“python有哪些高效率技巧”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python有哪些高效率技巧”吧!清理字符串输入清理用户输入的问题,几乎适用于我们可能编写的每个程序。

本篇内容主要讲解“python有哪些高效率技巧”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习Python有哪些高效率技巧”吧!

清理字符串输入

清理用户输入的问题,几乎适用于我们可能编写的每个程序。通常将字符转换为小写或大写就足够了,这时只需要使用正则即可,但是对于复杂的情况,有一种更好的方法: 

user_input = "This\nstring has\tsome whitespaces...\r\n"      character_map = {          ord('\n') : ' ',          ord('\t') : ' ',          ord('\r') : None      }      user_input.translate(character_map)  # This string has some whitespaces... "

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

迭代器切片

如果您尝试获取迭代器的切片,系统会报 TypeError,提示生成器对象不可下标,但是解决方案很简单:

import itertools   s = itertools.islice(range(50), 10, 20)  # <itertools.islice object at 0x7f70fab88138>   for val in s:   ...

使用 itertools.islice,我们可以创建一个 islice对象,该对象是产生所需元素的迭代器。不过,请务必注意,这会消耗所有生成器项,直到切片开始为止,而且还会消耗我们的“ islice”对象中的所有项。

Using itertools.islice we can create a islice object which is an iterator that produces desired items. It's important to note though, that this consumes all generator items up until the start of slice and also all the items in our islice object.

跳过可迭代对象的开始

有时候需要处理的文件里,明确存在一些不需要的数据行,但是我们不确定数量,比如说代码中的注释。这时, itertools 再次为我们提供了简洁的方案: 

string_from_file = """     // Author: ...     // License: ...     //     // Date: ...     Actual content...     """     import itertools     for line in itertools.dropwhile(lambda line: line.startswith("//"), string_from_file.split("\n")):     print(line)

这段代码仅在初始注释部分之后,才会产生数据行。如果我们只想在迭代器的开头丢弃数据,而又不知道有具体数量时,这个方法很有用。

仅带关键字参数(kwargs)的函数

有时候,使用仅支持关键字参数的函数可以让代码更加清晰易懂: 

def test(*, a, b):     pass     test("value for a", "value for b")  # TypeError: test() takes 0 positional arguments...     test(a="value", b="value 2")  # Works...

只需要在关键字参数前面再加一个 * 参数,就可以轻松实现了。当然,如果还希望再加上位置参数,可以在 * 参数前面再增加。

创建支持 with语句的对象

我们都知道如何打开文件或使用 with语句获取,但是怎样自己可以实现类似的功能呢?一般来说,我们可以使用 __enter__和 __exit__方法来实现上下文管理器协议: 

classConnection:     def __init__(self):     ...     def __enter__(self):     # Initialize connection...     def __exit__(self, type, value, traceback):     # Close connection...     withConnection() as c:     # __enter__() executes     ...     # conn.__exit__() executes

上面是最常见的实现方式,但是还有一种更简单的方法: 

from contextlib import contextmanager     @contextmanager     def tag(name):     print(f"<{name}>")     yield     print(f"")     with tag("h2"):     print("This is Title.")

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

用 __slots__节省内存

如果程序需要创建大量的类实例,我们会发现程序占用了大量内存。这是因为 Python 使用字典来表示类实例的属性,这样的话创建速度很快,但是很耗内存。如果内存是你需要考虑的一个问题,那么可以考虑使用 __slots__: 

classPerson:         __slots__ = ["first_name", "last_name", "phone"]     def __init__(self, first_name, last_name, phone):     self.first_name = first_name     self.last_name = last_name     self.phone = phone

当我们定义 __slots__属性时,Python会使用固定大小的数组(占用内存少)来存储属性,而不是字典,这大大减少了每个实例所需的内存。不过使用 __slots__还有一些缺点:无法声明任何新属性,我们只能使用 __slots__中的那些属性。同样,带有 __slots__的类不能使用多重继承。

限制CPU和内存使用量

如果不是想优化程序内存或CPU使用率,而是想直接将其限制为某个数值,那么Python也有一个可以满足要求的库: 

import signal      import resource      import os      # To Limit CPU time      def time_exceeded(signo, frame):      print("CPU exceeded...")      raiseSystemExit(1)      def set_max_runtime(seconds):      # Install the signal handler and set a resource limit          soft, hard = resource.getrlimit(resource.RLIMIT_CPU)          resource.setrlimit(resource.RLIMIT_CPU, (seconds, hard))          signal.signal(signal.SIGXCPU, time_exceeded)      # To limit memory usage      def set_max_memory(size):          soft, hard = resource.getrlimit(resource.RLIMIT_AS)          resource.setrlimit(resource.RLIMIT_AS, (size, hard))

在这里,我们可以设置了最大cpu运行时间以及最大内存使用限制的两个选项。对于cpu限制,我们首先获得该特定资源( RLIMIT_CPU)的软限制和硬限制,然后使用参数指定的秒数和先前获取的硬限制来设置。

最后,我们注册了一个在超过CPU时间后,让系统退出的信号。至于内存,我们再次获取软限制和硬限制,并使用带有大小参数的 setrlimit和硬限制完成配置

控制导入的内容

某些语言提供了导出成员(变量,方法,接口)的显式机制,例如golang,它仅导出以大写字母开头的成员。但是在Python中,所有对象都会导出,除非我们使用 __all__: 

def foo():     pass     def bar():     pass     __all__ = ["bar"]

上面的代码段中,只会导出 bar函数。另外,如果 __all__的值为空,那么不会导出任何函数,而且在导入该模块时系统会报 AttributeError。

实现比较运算符

如果我们要逐一为某个类实现所有的比较运算符,你肯定会觉得很麻烦,因为要实现的方法还不少,有 __lt__,__le__,__gt__, 和 __ge__。

其实,Python 提供了一种便捷的实现方式,就是通过 functools.total_ordering装饰器。 

from functools import total_ordering     @total_ordering     classNumber:     def __init__(self, value):     self.value = value     def __lt__(self, other):     returnself.value < other.value     def __eq__(self, other):     returnself.value == other.value     print(Number(20) > Number(3))     print(Number(1) < Number(5))     print(Number(15) >= Number(15))     print(Number(10) <= Number(2))

这是怎么实现的呢? total_ordering可以用来简化实现类排序的过程。我们只需要定义 __lt__和 __eq__(这是映射剩余操作的最低要求),然后就交给装饰器去完成剩余的工作了。

到此,相信大家对“Python有哪些高效率技巧”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Python有哪些高效率技巧

本文链接: https://www.lsjlt.com/news/284399.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python有哪些高效率技巧
    本篇内容主要讲解“Python有哪些高效率技巧”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python有哪些高效率技巧”吧!清理字符串输入清理用户输入的问题,几乎适用于我们可能编写的每个程序。...
    99+
    2023-06-16
  • 高效率的Python编程技巧有哪些
    这篇文章主要介绍“高效率的Python编程技巧有哪些”,在日常操作中,相信很多人在高效率的Python编程技巧有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”高效率的Python编程技巧有哪些”的疑惑有所...
    99+
    2023-06-16
  • 提高效率的Linux技巧有哪些
    这篇文章将为大家详细讲解有关提高效率的Linux技巧有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。命令编辑如果要对一个已输入的命令进行修改,可以使用 ^a(ctrl + a)或 ^e(ctrl + ...
    99+
    2023-06-16
  • 提高开发效率Vue技巧有哪些
    这篇文章主要讲解了“提高开发效率Vue技巧有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“提高开发效率Vue技巧有哪些”吧!组件(component)的...
    99+
    2024-04-02
  • 提高开发效率的Vue技巧有哪些
    本篇内容主要讲解“提高开发效率的Vue技巧有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“提高开发效率的Vue技巧有哪些”吧!组件(component)的使...
    99+
    2024-04-02
  • Python中有哪些高效的技巧
    本篇内容主要讲解“Python中有哪些高效的技巧”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中有哪些高效的技巧”吧!反转列表Python 中通常有两种反转列表的方法:切片或 rev...
    99+
    2023-07-06
  • 提高CSS代码效率的技巧有哪些
    本篇内容介绍了“提高CSS代码效率的技巧有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.注意外边距...
    99+
    2024-04-02
  • 提高Linux管理效率的技巧有哪些
    这篇文章主要为大家展示了“提高Linux管理效率的技巧有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“提高Linux管理效率的技巧有哪些”这篇文章吧。技巧 1:卸载无响应的 DVD 驱动器网...
    99+
    2023-06-16
  • 有哪些Python高效代码小技巧
    本篇内容主要讲解“有哪些Python高效代码小技巧”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“有哪些Python高效代码小技巧”吧!把不常用的类别整合成一个有时你会得到元素分布不均的栏,少有的...
    99+
    2023-06-16
  • 提高效率的Java代码小技巧有哪些
    提高效率的Java代码小技巧有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言代码优化 ,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改...
    99+
    2023-06-16
  • 让你效率更高的CSS代码技巧有哪些
    这篇文章主要为大家展示了“让你效率更高的CSS代码技巧有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“让你效率更高的CSS代码技巧有哪些”这篇文章吧。 1...
    99+
    2024-04-02
  • PyCharm比较高效率的使用技巧有哪些呢
    本篇文章为大家展示了PyCharm比较高效率的使用技巧有哪些呢,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。文件差异,轻松比对程序开发必备神器中,beyond compare 绝对可以排一号。虽说好...
    99+
    2023-06-02
  • 可以提高工作效率的excel技巧有哪些
    这篇文章给大家分享的是有关可以提高工作效率的excel技巧有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.单元格中的######号相信大家在制表时经常有遇到这种情况,那么...
    99+
    2024-04-02
  • 提升Python的执行效率的技巧有哪些
    今天小编给大家分享一下提升Python的执行效率的技巧有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。开始之前小伙伴先可...
    99+
    2023-07-06
  • 提高开发效率和性能的Vue技巧有哪些
    本篇内容主要讲解“提高开发效率和性能的Vue技巧有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“提高开发效率和性能的Vue技巧有哪些”吧!1. 巧用$attrs和$listeners$att...
    99+
    2023-07-02
  • 有哪些高级的Python技巧
    本篇内容主要讲解“有哪些高级的Python技巧”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“有哪些高级的Python技巧”吧!1.通过多个键值将对象进行排序假设要对以下字典列表进行排序:peop...
    99+
    2023-06-16
  • 高效使用GitHub的技巧有哪些
    这篇“高效使用GitHub的技巧有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“高效使用GitHub的技巧有哪些”文章吧...
    99+
    2023-06-27
  • 18个Python高效编程技巧分别有哪些
    这篇文章给大家介绍18个Python高效编程技巧分别有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。初识Python语言,觉得python满足了我上学时候对编程语言的所有要求。python语言的高效编程技巧让我们这...
    99+
    2023-06-16
  • JS提升工作效率的技巧有哪些
    本篇内容主要讲解“JS提升工作效率的技巧有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JS提升工作效率的技巧有哪些”吧!这些方法肯定会帮助您:减少 LOC...
    99+
    2024-04-02
  • Linux管理效率的实用技巧有哪些
    这篇文章主要讲解了“Linux管理效率的实用技巧有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux管理效率的实用技巧有哪些”吧!技巧 1:卸载无响应的 DVD 驱动器网络新手的经...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作