使用python内置函数提高编程效率
在python解释器中可以直接交互式的探索模块和对象,这是一个非常强大又容易被人忽视的技巧,特别是对python新手来说更是如此。
对于编程语言来说,如果不查阅在线文档或者认真学习接口定义,那么很难了解包或类的内部内容,而python就不一样,下面将演示两种可用于在解释器中交互式的探索python类和方法的简单技巧,这些技巧可用于以任何方式安装的python,只需要在命令行中使用python命令启动python解释器即可。
假设我们正在编写python程序,它刚好使用到了python标准库中的datetime模块,那么如何确定这个模块能导出哪些函数或类呢?以及这些类中有哪些方法和属性呢?
一种方法是使用搜索引擎或在网上查找官方的文档,而另一种,则是使用python中内置的dir()函数,它能直接在python REPL中访问这些信息:
import datetime
dir(datetime)
在上面的例子中,首先是在终端执行python3启动解释器,然后从标准库中导入datatime模块,接着使用了dir()函数查看了这个模块,在模块上调用dir()可以得到按字母顺序排列的名称和属性列表,由于python中的一切皆为对象,因此这个技巧不仅适用于模块本身,还可以用于模块导出的类和数据结构以及对象。
示例:
对datetime中的date类使用dir()
dir(datetime.date)
从上面的截图可以看到,dir()能够让你快速浏览模块或类中可用的内容,如果记不清某个特定类或函数的确切拼写,使用dir()无须中断当前编辑码流程就能查看相关的内容。
在复杂的模块或类上调用dir()时,有时可能会产生太长的内容让人难以阅读,于是我们可以使用下面这个小技巧过滤出感兴趣的内容:
[item for item in dir(datetime) if "date" in item.lower()]
上面使用列表解析式来过滤dir(datetime)产生的结果,仅显示包含了date的名称,在过滤时对产生的每一项上都调用了lower()方法,是确保过滤时不区分大小写问题。
有时列出对象的属性并不足以解决手头上的问题,那么关于datetime模块的导出函数和类,怎样才能获得更多详细的信息?这时就可以使用python的内置函数help()来解决了,help()函数用来在python中浏览所有python对象自动生成的文档:
help(datetime)
如果在python解释器会话中运行上面示例,那么终端将显示基于文本的帮助页面,其中有datetime模块的相关信息,使用光标上下键能滚动文档,按空格键会一次向下滚动几行,按q键会退出交互式帮助模式,重新回到解释器会话中。help()函数可以在所有的python对象上使用,包括其它内置的函数和自定义的类,python解释器会根据对象及其文档字符串自动生成帮助文档,例如下面的help()函数的使用方式都是正确的:
help(datetime.date)
help(datetime.date.fromtimestamp)
help(dict)
当然,dir()和help()还是比不上格式良好的HTML文档,但是这两个函数可用来在不离开python解释器的情况下快速查找相关的内容,可以在断网的情况下继续使用,在特殊情况下是非常好用的。
总结:
- 使用内置的dir()函数可以在python解释器会话中交互式的探索模块和类
- 内置的help()函数可用来直接在解释器中浏览文档,按q键退出