使用Python这么多年,才发现Python还有这些实用的功能和特点

在使用Python多年以后,我偶然发现了一些我们过去不知道的功能和特性。一些可以说是非常有用,但却没有充分利用。考虑到这一点,我编辑了一些你应该了解的Python功能特色。

带任意数量参数的函数

你可能已经知道了Python允许你定义可选参数。但还有一个方法,可以定义函数任意数量的参数。

首先,看下面是一个只定义可选参数的例子

现在,让我们看看怎么定义一个可以接受任意参数的函数。我们利用元组来实现。

使用Glob()查找文件

大多Python函数有着长且具有描述性的名字。但是命名为glob()的函数你可能不知道它是干什么的除非你从别处已经熟悉它了。

它像是一个更强大版本的listdir()函数。它可以让你通过使用模式匹配来搜索文件。

你可以像下面这样查找多个文件类型:

如果你想得到每个文件的绝对路径,你可以在返回值上调用realpath()函数:

调试

下面的例子使用inspect模块。该模块用于调试目的时是非常有用的,它的功能远比这里描述的要多。

这篇文章不会覆盖这个模块的每个细节,但会展示给你一些用例。

生成唯一ID

在有些情况下你需要生成一个唯一的字符串。我看到很多人使用md5()函数来达到此目的,但它确实不是以此为目的。

其实有一个名为uuid()的Python函数是用于这个目的的。

你可能会注意到,即使字符串是唯一的,但它们后边的几个字符看起来很相似。这是因为生成的字符串与电脑的MAC地址是相联系的。

为了减少重复的情况,你可以使用这两个函数。

序列化

你曾经需要将一个复杂的变量存储在数据库或文本文件中吧?你不需要想一个奇特的方法将数组或对象格转化为式化字符串,因为Python已经提供了此功能。

这是一个原生的Python序列化方法。然而近几年来JSON变得流行起来,Python添加了对它的支持。现在你可以使用JSON来编解码。

这样更紧凑,而且最重要的是这样与JavaScript和许多其他语言兼容。然而对于复杂的对象,其中的一些信息可能丢失。

压缩字符

当谈起压缩时我们通常想到文件,比如ZIP结构。在Python中可以压缩长字符,不涉及任何档案文件。

注册Shutdown函数

有可模块叫atexit,它可以让你在脚本运行完后立马执行一些代码。想要一起学习交流想要共同进步的可以加python学习q-u-n-227+435+450 ,里有许多学习视频资料等待着大家

假如你想在脚本执行结束时测量一些基准数据,比如运行了多长时间:

打眼看来很简单。只需要将代码添加到脚本的最底层,它将在脚本结束前运行。但如果脚本中有一个致命错误或者脚本被用户终止,它可能就不运行了。

当你使用atexit.register()时,你的代码都将执行,不论脚本因为什么原因停止运行。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏蓝天

cgroup初步分析(1)

cgroup的功能和作用不废话,直说一下cgroup的几条设计准则,有了几条设计准则的约束,就比较容易理解其中的数据结构和函数,至于源代码cgroup.c,无非...

16610
来自专栏嵌入式程序猿

教你MODBUS程序符合MISRA规则

做嵌入式开发的广大工程师应该对MISRA C不陌生,他是Motor Industry Software Reliability Association 的缩写,...

17230
来自专栏PHP在线

什么是堆和栈,它们在哪儿?

问题描述 编程语言书籍中经常解释值类型被创建在栈上,引用类型被创建在堆上,但是并没有本质上解释这堆和栈是什么。我仅有高级语言编程经验,没有看过对此更清晰的解释。...

40950
来自专栏IT派

Python 3.7:数据类的介绍

Python3.7预计在今年夏天发布,让我们一起偷瞄一眼它带来的新功能吧!如果你经常一个人在家用Pycharm撸代码,请确保将你的Pycharm...

18720
来自专栏FreeBuf

无字母数字Webshell之提高篇

这题可能来自是我曾写过的一篇文章:《一些不包含数字和字母的Webshell》,里面介绍了如何构造无字母数字的webshell。其中有两个主要的思路:

15330
来自专栏FreeBuf

如何利用IDA Python浏览WINDOWS内核

当我去参加安全会议时,我总喜欢跟大神们讨论关于逆向工程方面的东西。因为这样我就可以从别人的经验中了解到他们是如何自动化实现那些繁琐操作的了。值得一提的是,很多人...

16840
来自专栏Java帮帮-微信公众号-技术文章全总结

【大牛经验】关于堆和栈的那些事

问题描述 编程语言书籍中经常解释值类型被创建在栈上,引用类型被创建在堆上,但是并没有本质上解释这堆和栈是什么。我仅有高级语言编程经验,没有看过对此更清晰的解释。...

37690
来自专栏進无尽的文章

load方法简化类的负载、结构化工程

这篇文章即是技术篇又是跟项目架构设计相关的文章,(个人是这样感觉的),一直在搜集和总结产品架构方面的技术和技巧,很多时候都是自己知道,但是不知道怎么写出来,恰好...

9030
来自专栏JavaEdge

Java Fork Join 框架Doug Lea 关于Java 7引入的他写的Fork/Join框架的论文0. 摘要1. 简介2. 设计3. 实现

33080
来自专栏Python入门

使用Python这么多年,才发现Python还有这些实用的功能和特点

在使用Python多年以后,我偶然发现了一些我们过去不知道的功能和特性。一些可以说是非常有用,但却没有充分利用。考虑到这一点,我编辑了一些你应该了解的Pytho...

10910

扫码关注云+社区

领取腾讯云代金券