本文为 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)
当用户编写处理事先未定义的命名参数的函数时,这个很有用。
列表解析
领取专属 10元无门槛券
私享最新 技术干货