你想要的Python编程技巧,我都给你整理好了

本文为 AI 研习社编译的技术博客,原标题 :

An A-Z of useful Python tricks

翻译 | 余杭、李灏 校对 | 志豪 整理 | 志豪

https://medium.freecodecamp.org/an-a-z-of-useful-python-tricks-b467524ee747

Python 是这个世界上最受欢迎的按需编程语言之一。其中包含很多原因:

易学习

应用范围广

具备非常多的模型和库

Python 是我作为数据科学家日常生活中不可或缺的一部分。在学习 Python 的过程中,我领悟到了很多的方法和技巧。

在这里,我尝试用 A-Z 的格式来做一些分享。

大部分的技巧是我在日常工作中使用的或是偶然发现的。 其中一些是在浏览 Python Standard Library docs 找到的。其他的一些是我在 PyPi 中搜索找到的。

但事实上,还是应该归功于 awesome-python.com ,因为我在上面找到了四个或五个实用的技巧。这是数百个有趣的 Python 工具和模块。非常值得浏览以获取灵感。

all or any

Python 受欢迎的众多原因之一是它的可读性和易表达性。

人们经常笑称 Python 是可执行的伪代码。但当你写出下述代码,很难去反驳这种言论。

x = [True,True,False]

ifany(x):

print("At least one True")

ifall(x):

print("Not one False")

ifany(x)andnotall(x):

print("At least one True and one False")

bashplotlib

想在控制台中绘图吗?

$pip install bashplotlib

使用上述命令行,即可在控制台中绘图。

集合

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

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

fromcollectionsimportOrderedDict, Counter

x = OrderedDict(a=1, b=2, c=3)

y = Counter("Hello World!")

dir

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

输入下述命令行:

>>> dir()

>>> dir("Hello World")

>>> dir(dir)

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

emoji

Python 包含 emoji 模块,在这里!

$pip install emoji

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

fromemojiimportemojize

print(emojize(":thumbs_up:"))

from _future_import

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

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

from__future__importprint_function

print("Hello World!")

为什么不导入花括号呢?

geopy

地理知识对于程序猿来说是非常大的挑战是,但是 geopy 模块让它变得更简单。

$pip install geopy

它通过提取不同的地理编码服务 API 进行工作,以此能获取一个地方的完整街道地址,经度,纬度,甚至是海拔高度。

geopy 还提供一个非常有用的距离类。它支持用户喜欢的度量方式来计算两个地点之间的距离。

fromgeopyimportGoogleV3

place ="221b Baker Street, London"

location = GoogleV3().geocode(place)

print(location.address)

print(location.location)

howdoi

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

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

$pip install howdoi

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

$howdoi vertical align css

$howdoiforloopinjava

$howdoi undo commitsingit

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

$howdoiexitvim

inspect

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

下述代码示例使用

inspect.getsource()

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

inspect.getmodule()

来打印定义它的模块。

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

importinspect

print(inspect.getsource(inspect.getsource))

print(inspect.getmodule(inspect.getmodule))

print(inspect.currentframe().f_lineno)

当然,除了这些琐碎的用途之外 , inspect 模块还支持理解用户代码正在做什么。用户还可以利用 Inspect 模块编写自文档化代码。

Jedi

Jedi 是一个自动完成以及代码分析库。它使得编写代码更加快速以及更高产。

除非用户正在自主开发 IDE,否则肯定会对使用 Jedi 作为编辑器插件非常感兴趣。幸运的是,已经开放下载。

用户可能已经在使用 Jedi。 IPython 项目基于 Jedi 实现了代码自动完成功能。

**kwargs

在学习任何编程语言时,一路上会遇到很多里程碑。在学习 Python 时,理解神秘的 **kwargs 是其中一块里程碑。

字典前面的双星号支持把字典的内容作为命名参数传递给函数。

字典的秘钥是参数名,值是传递给函数的值,用户甚至都不需要称它为 kwargs

dictionary = {"a":1,"b":2}

defsomeFunction(a, b):

print(a + b)

return

someFunction(**dictionary)

someFunction(a=1, b=2)

当用户编写处理事先未定义的命名参数的函数时,这个很有用。

列表解析

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180924A13I1J00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券