在这里,我尝试以 A - Z 开头的格式分享这些技巧中的一些,并且在本文中简单介绍这些方法,如果你对其中一个或多个感兴趣,你可以通过文末参考资料查看官方文档。希望对你能有所帮助。
A - Z
all or any
Python 语言如此流行的众多原因之一,是因为它具有很好的可读性和表现力。
人们经常开玩笑说 Python 是可执行的伪代码。当你可以像这样写代码时,就很难反驳。
x = [True, True, False]
if any(x):
print("至少有一个True")
if all(x):
print("全是True")
if any(x) and not all(x):
print("至少一个True和一个False")
bashplotlib
你有没有想过在控制台中绘制图形吗?
Bashplotlib 是一个 Python 库,他能够帮助我们在命令行(粗旷的环境)中绘制数据。
# 模块安装
pip install bashplotlib
# 绘制实例
import numpy as np
from bashplotlib.histpgram import plot_hist
arr = np.ramdom.normal(size=1000, loc=0, scale=1)
plot_hist(arr, bincount=50)
collections
Python 有一些很棒的默认数据类型,但有时它们的行为并不完全符合你的期望。
幸运的是,Python 标准库提供了 collections 模块[1]。这个方便的附加组件为你提供了更多的数据类型。
from collections import OrderedDict, Counter
# 记住键的添加顺序!
x = OrderedDict(a=1, b=2, c=3)
# 统计每个字符出现的频率
y = Counter("Hello World!")
dir
有没有想过如何查看 Python 对象内部并查看它具有哪些属性?在命令行中输入:
dir()
dir("Hello World")
dir(dir)
当以交互方式运行 Python 以及动态探索你正在使用的对象和模块时,这可能是一个非常有用的功能。在这里阅读更多functions[2]相关内容。
emoji
emoji[3] 是日本在无线通信中所使用的视觉情感符号,绘指图画,文字指的则是字符,可用来代表多种表情,如笑脸表示笑、蛋糕表示食物等。在中国大陆,emoji通常叫做“小黄脸”,或者直称emoji。
# 安装模块
pip install emoji
# 做个尝试
from emoji import emojize
print(emojize(":thumbs_up:"))
from __future__ import
Python 流行的结果之一,总是有新版本正在开发中。新版本意味着新功能 —— 除非你的版本已过时。
不过不要担心。使用该__future__模块[4]可以帮助你用Python的未来版本导入功能。从字面上看,这就像时间旅行、魔法或其他东西。
from __future__ import print_function
print("Hello World!")
geogy
地理,对大多数程序员来说是一个具有挑战性的领域。在获取地理信息或者绘制地图时,也会遇到不少问题。这个geopy 模块[5]让地理相关内容变得非常容易。
它通过抽象一系列不同地理编码服务的 API 来工作。通过它,你能够获得一个地方的完整街道地址、纬度、经度甚至海拔高度。
还有一个有用的距离类。它以你偏好的测量单位计算两个位置之间的距离。
from geopy import GoogleV3
place = "221b Baker Street, London"
location = GoogleV3().geocode(place)
print(location.address)
print(location.location)
howdoi
当你使用terminal终端编程时,通过在遇到问题后会在StackOverflow上搜索答案,完后会回到终端继续编程,此时有时会不记得你之前查到的解决方案,此时需要重新查看StackOverflow,但又不想离开终端,那么此时你需要用到这个有用的命令行工具howdoi[6]。
无论你有什么问题,都可以问它,它会尽力回复。
howdoi vertical align css
howdoi for loop in java
howdoi undo commits in git
但请注意——它会从 StackOverflow 的最佳答案中抓取代码。它可能并不总是提供最有用的信息......
inspect
Python 的inspect模块[7]非常适合了解幕后发生的事情。你甚至可以调用它自己的方法!
下面的代码示例inspect.getsource() 用于打印自己的源代码。 inspect.getmodule() 还用于打印定义它的模块。
最后一行代码打印出它自己的行号。
import inspect
print(inspect.getsource(inspect.getsource))
print(inspect.getmodule(inspect.getmodule))
print(inspect.currentframe().f_lineno)
当然,除了这些微不足道的用途,inspect 模块可以证明对理解你的代码在做什么很有用。你还可以使用它来编写自文档化代码。
Jedi
Jedi 库是一个自动完成和代码分析库。它使编写代码更快、更高效。
除非你正在开发自己的 IDE,否则你可能对使用Jedi [8]作为编辑器插件比较感兴趣。幸运的是,这已经有可用的负载!
**kwargs
在学习任何语言时,都会有许多里程碑。使用 Python 并理解神秘的**kwargs语法可能算作一个重要的里程碑。
字典对象前面的双星号**kwargs[9]允许你将该字典的内容作为命名参数传递给函数。
字典的键是参数名称,值是传递给函数的值。你甚至不需要调用它kwargs!
dictionary = {"a": 1, "b": 2}
def someFunction(a, b):
print(a + b)
return
# 这些做同样的事情:
someFunction(**dictionary)
someFunction(a=1, b=2)
当你想编写可以处理未预先定义的命名参数的函数时,这很有用。