我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python有哪些高效率技巧

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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有哪些高效率技巧”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python有哪些高效率技巧

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

下载Word文档

猜你喜欢

Python有哪些高效率技巧

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

高效率的Python编程技巧有哪些

这篇文章主要介绍“高效率的Python编程技巧有哪些”,在日常操作中,相信很多人在高效率的Python编程技巧有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”高效率的Python编程技巧有哪些”的疑惑有所
2023-06-16

提高效率的Linux技巧有哪些

这篇文章将为大家详细讲解有关提高效率的Linux技巧有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。命令编辑如果要对一个已输入的命令进行修改,可以使用 ^a(ctrl + a)或 ^e(ctrl +
2023-06-16

Python中有哪些高效的技巧

本篇内容主要讲解“Python中有哪些高效的技巧”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中有哪些高效的技巧”吧!反转列表Python 中通常有两种反转列表的方法:切片或 rev
2023-07-06

提高Linux管理效率的技巧有哪些

这篇文章主要为大家展示了“提高Linux管理效率的技巧有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“提高Linux管理效率的技巧有哪些”这篇文章吧。技巧 1:卸载无响应的 DVD 驱动器网
2023-06-16

有哪些Python高效代码小技巧

本篇内容主要讲解“有哪些Python高效代码小技巧”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“有哪些Python高效代码小技巧”吧!把不常用的类别整合成一个有时你会得到元素分布不均的栏,少有的
2023-06-16

提高效率的Java代码小技巧有哪些

提高效率的Java代码小技巧有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言代码优化 ,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改
2023-06-16

PyCharm比较高效率的使用技巧有哪些呢

本篇文章为大家展示了PyCharm比较高效率的使用技巧有哪些呢,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。文件差异,轻松比对程序开发必备神器中,beyond compare 绝对可以排一号。虽说好
2023-06-02

提升Python的执行效率的技巧有哪些

今天小编给大家分享一下提升Python的执行效率的技巧有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。开始之前小伙伴先可
2023-07-06

提高开发效率和性能的Vue技巧有哪些

本篇内容主要讲解“提高开发效率和性能的Vue技巧有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“提高开发效率和性能的Vue技巧有哪些”吧!1. 巧用$attrs和$listeners$att
2023-07-02

有哪些高级的Python技巧

本篇内容主要讲解“有哪些高级的Python技巧”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“有哪些高级的Python技巧”吧!1.通过多个键值将对象进行排序假设要对以下字典列表进行排序:peop
2023-06-16

18个Python高效编程技巧分别有哪些

这篇文章给大家介绍18个Python高效编程技巧分别有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。初识Python语言,觉得python满足了我上学时候对编程语言的所有要求。python语言的高效编程技巧让我们这
2023-06-16

Linux管理效率的实用技巧有哪些

这篇文章主要讲解了“Linux管理效率的实用技巧有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux管理效率的实用技巧有哪些”吧!技巧 1:卸载无响应的 DVD 驱动器网络新手的经
2023-06-16

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录