dir的使用技巧_一日一技:提高python编程技巧

b9cf7fd8d7cb8f344bc32f75d435e848.png

使用python内置函数提高编程效率

在python解释器中可以直接交互式的探索模块和对象,这是一个非常强大又容易被人忽视的技巧,特别是对python新手来说更是如此。

对于编程语言来说,如果不查阅在线文档或者认真学习接口定义,那么很难了解包或类的内部内容,而python就不一样,下面将演示两种可用于在解释器中交互式的探索python类和方法的简单技巧,这些技巧可用于以任何方式安装的python,只需要在命令行中使用python命令启动python解释器即可。

假设我们正在编写python程序,它刚好使用到了python标准库中的datetime模块,那么如何确定这个模块能导出哪些函数或类呢?以及这些类中有哪些方法和属性呢?

一种方法是使用搜索引擎或在网上查找官方的文档,而另一种,则是使用python中内置的dir()函数,它能直接在python REPL中访问这些信息:

import datetime
dir(datetime)

530960e667bc385b74aa259b995e8fb7.png

在上面的例子中,首先是在终端执行python3启动解释器,然后从标准库中导入datatime模块,接着使用了dir()函数查看了这个模块,在模块上调用dir()可以得到按字母顺序排列的名称和属性列表,由于python中的一切皆为对象,因此这个技巧不仅适用于模块本身,还可以用于模块导出的类和数据结构以及对象。

示例:

对datetime中的date类使用dir()

dir(datetime.date)

6d55d8e6b7726a056d249e8758d42072.png

从上面的截图可以看到,dir()能够让你快速浏览模块或类中可用的内容,如果记不清某个特定类或函数的确切拼写,使用dir()无须中断当前编辑码流程就能查看相关的内容。

在复杂的模块或类上调用dir()时,有时可能会产生太长的内容让人难以阅读,于是我们可以使用下面这个小技巧过滤出感兴趣的内容:

[item for item in dir(datetime) if "date" in item.lower()]

e5cf1c2b041e36e3c5928d641c93d807.png

上面使用列表解析式来过滤dir(datetime)产生的结果,仅显示包含了date的名称,在过滤时对产生的每一项上都调用了lower()方法,是确保过滤时不区分大小写问题。

有时列出对象的属性并不足以解决手头上的问题,那么关于datetime模块的导出函数和类,怎样才能获得更多详细的信息?这时就可以使用python的内置函数help()来解决了,help()函数用来在python中浏览所有python对象自动生成的文档:

help(datetime)

c78bb43131adcc7a7406b18d8ec01a7c.png

如果在python解释器会话中运行上面示例,那么终端将显示基于文本的帮助页面,其中有datetime模块的相关信息,使用光标上下键能滚动文档,按空格键会一次向下滚动几行,按q键会退出交互式帮助模式,重新回到解释器会话中。help()函数可以在所有的python对象上使用,包括其它内置的函数和自定义的类,python解释器会根据对象及其文档字符串自动生成帮助文档,例如下面的help()函数的使用方式都是正确的:

help(datetime.date)
help(datetime.date.fromtimestamp)
help(dict)

当然,dir()和help()还是比不上格式良好的HTML文档,但是这两个函数可用来在不离开python解释器的情况下快速查找相关的内容,可以在断网的情况下继续使用,在特殊情况下是非常好用的。

总结:

  • 使用内置的dir()函数可以在python解释器会话中交互式的探索模块和类
  • 内置的help()函数可用来直接在解释器中浏览文档,按q键退出
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值