被人工智能捧红的 Python 已是一种发展完善且非常多样化的语言,其中肯定有一些你尚未发现的功能。那么今天或许我能够让你学到一些新技巧。

Python的发展:

“人生苦短,我用 Python”,Python 的经典 slogan 讲究争分夺秒,自 20 世纪 90 年代初首次录入 TIOBE,Python 花了 10 年才首次进入指数前 10 名,随着它的不断应用与发展,Python 逐渐在网络安全与数据科学等领域大放异彩。

Python 最初是 Perl 的继承者,用于编写构建脚本,并且作为一种胶水语言,它被广泛用于连接各种软件组件。但随着不断应用与发展,Python 逐渐进入了其它领域,比如网络安全与数据科学。如今,在大型嵌入式系统中运行 Python 也变得非常普遍,并且随着人工智能与数据分析等领域的大热,Python 也得到了前所未有的高度关注,相信它也会保持向前。

目前在全球范围内它已经是大学的首选编程语言,同时也征服了工业界。越来越多人使用 Python,反映在 TIOBE 指数上就是它稳扎稳打地一步步向上爬,从前 10 到前 5,如今终于进入了前 3。

Python的必备技巧:

1、简洁的表达式

点评:Python因为简洁高效而出名,就是因为语法非常简单,而且内置了很多强大的数据结构:

比如我们可以大量用推导列表来生成很多简洁的代码

比如我们可以用if else组合,本来需要2-3行代码写的,一行搞定!

2、排序

忽略想起了一句台词,“有人的地方就有江湖”,那么有数组这样的数据结构一定涉及到排序,取最大值,取最小值。

点评:这个heapq库非常好用,尤其是我们在取一些列表的头部数据,比如最大几个,最小几个经常用到,很实用的一招!啥也不说了,赶紧背下来!

3、查询

排序和查询都是好基友,长的数据结构里面(字典,列表)里面我们一定会有查询,过滤的需求。有的时候,我们需要从一个很长的列表里面,找到某一个或者某一类的元素,怎么办,很简单,用高级函数filter :

1).用lambda配合filter过滤

点评:lambda是一个非常简洁的函数表达方式,短小精悍,加上配合filter一起使用,非常漂亮。比如我们通过 字符串里的startswith内置函数,非常方便的过滤出列表里面我们需要的数据!(Python3稍微改一下再filter之外再加一个list,不然生成的是迭代器地址)

点评:正则是一个非常不错的过滤方法,有的时候好的正则顶的上几十行代码,精通正则对玩数据分析,数据清洗是必需的技能!

4、碾平list

有的时候我们会遇到复杂的数据结构,比如列表里面套列表,层层嵌套,非常麻烦。可以碾平的方法:

传统方法

点评:这里面就是用递归来解决的,思路非常简单清晰,但是递归一定要有出口,设计的时候要注意。

另外还有两种高手的写法,理解起来比较复杂,这里就不过多说明,感兴趣的可以找一找。

5、带条件的推导列表

推导列表应该是我最喜欢的一种Pythonic方式,它的演变有很多手法,这几种都是非常常见的,多读几遍,背下来!

6、漂亮的添加字典的方法

设计数据结构的时候,字典是必须的!很多时候我们会用带下面的字典更新的方法,当然更好的是collections模块里面的defaultdict!

点评:dict.update还是比较平易近人的,这个dict(dict,**options)用法我第一次看到的时候也是楞了一些,什么鬼,现在见多了,也就习惯了!

Python的精选技巧:

1、all 或 any

Python 如此受欢迎,原因之一是因为它具有可读性和可表达性。

人们经常开玩笑说 Python 是“可执行的伪代码”,但是当你可以这样编写代码时,你就很难反驳了。

2、bashplotlib

你想在控制台(console)上绘制图形吗?

1$ pip install bashplotlib

这样你在控制台中就可以绘制图形了。

3、集合

Python 内置默认的数据类型,但有时它们的使用效果会不尽如人意。

幸运的是,Python 的标准库提供了 collections 模块,这个方便的附加库提供了更多的数据类型。

from collections import OrderedDict, Counter
x = OrderedDict(a=1, b=2, c=3)
y = Counter("Hello World!")

4、dir

你是否曾经有过深入 Python 对象内部并且观察它具备哪些属性的想法呢?

输入下述命令行:

以交互式运行 Python 时,这是一个非常实用的特征,并且可以动态地搜索正在使用的对象和模块。

5、emoji

Python 包含 emoji 模块,在这里!

$ pip install emoji

别以为我不知道你会偷偷下载...

6、原地交换两个数字

Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方法,请参见下面的示例:

x,y= 10,20print(x,y)x,y= y,xprint(x,y)#1 (10, 20)#2 (20, 10)

赋值的右侧形成了一个新的元组,左侧立即解析(unpack)那个(未被引用的)元组到变量和 。

一旦赋值完成,新的元组变成了未被引用状态并且被标记为可被垃圾回收,最终也完成了变量的交换。

7、from _future_import

Python 流行的一个结果是新版本总是在开发中。新版本意味着新功能——除非版本已经过时

不过别担心。_future_module 允许用户通过函数导入新版本 Python 的功能。这就像是时间旅行,或是奇异魔法之类......

from __future__ import print_function
print("Hello World!")

为什么不导入花括号呢?

8、geopy

地理(Geography)对于程序员来说可能是一个具有挑战性的领域。但是 geopy 模块让它变得异常简单。

$ pip install geopy

它通过抽取一系列不同地理编码服务的 API 来工作,使用户获取一个地方的完整街道地址、纬度、经度,甚至海拔高度。

另外一个有用的功能是距离:它可以用你喜欢的度量单位计算出两个位置之间的距离。

9、链状比较操作符

比较操作符的聚合是另一个有时很方便的技巧:

n= 10result= 1< n< 20print(result)# Trueresult= 1> n<= 9print(result)# False

10、howdoi

受困于编程问题并且不记得之前看到过的解决方法?用户需要使用 StackOverflow ,但是不想离开终端?

那么需要使用这个非常使用的命令行工具 howdoi

$ pip install howdoi

无论你有什么问题,它都会帮你解答。

但是请注意,它会从 StackOverflow 的最高票答案中抓取代码,这意味着它的回答并不总是最有用的。

$ howdoi exit vim

11、inspect

Python 的 inspects 模块对于理解背后的原理是非常有帮助的。用户甚至可以在 inspect 模块上调用其方法!

下述代码示例使用

inspect.getsource()

来打印它的源代码。同时它也使用

inspect.getmodule()

来打印定义它的模块。

最后一行代码打印出自身的行号。

当然,除去这些简单的用途之外,inspect 模块对于理解代码的作用也非常有用。你也可以使用它来写自编文档代码。

12、交互环境下的 “_” 操作符

这是一个我们大多数人不知道的有用特性,在 Python 控制台,不论何时我们测试一个表达式或者调用一个方法,结果都会分配给一个临时变量: _(一个下划线)。

>>> 2+ 13>>> _3>>> print_3

13、List Comprehensions

关于 Python 编程,我最喜欢的事情之一是它的列表生成式(List Comprehensions),

这些表达式可以很容易编写出简洁的代码,读起来几乎就像自然语言一样。

14、Jedi

Jedi 库是一个自动完成和代码分析的库。它能够使编写代码更为快速、更为高效。

除非你正在开发自己的 IDE,否则你可能对使用 Jedi 作为编辑器插件最感兴趣。幸运的是,现在加载这个插件已经可以用了!不过,你可能已经用上Jedi 了。IPython 项目的代码自动完成功能就是使用Jedi来实现的。

15、map

Python 通过许多内置功能支持函数式编程。map() 函数是最有用的函数之一——特别是当它与 lambda 函数结合使用时。

在上面的例子中,map() 将一个简单的 lambda 函数应用于 x 中的每个元素。它返回一个 map 对象,该对象可以被转换成可迭代的对象,如列表或元组。

16、**kwargs

在学习任何语言的过程中,都会遇到许多里程碑。使用Python,理解神秘的 **kwargs 语法可能就是其中之一。

dictionary 对象前面的双星号允许您将该 dictionary 的内容作为命名参数传递给函数。

dictionary 的键是参数名,值是传递给函数的值。你甚至不需要叫它 kwargs!

当你想编写可以处理未预先定义的命名参数的函数时,这就非常有用了。

总结:

Python的小技巧还有很多,上面只是介绍了其中的一部分,入门容易精通难!在进阶的路上,有没有什么好的技巧和好的方法,就是不断总结,不断记笔记!尤其是好的用法,就像写作文一样,好的名言警句要多背诵一些,写作的时候,肚子里的墨水多了才能才思泉涌,写出更多的好代码。

欢迎加入  51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ 群: 755431660