前两天晚上我在咖啡店里加班写 Python 脚本,脑袋昏昏沉沉的时候,突然遇到一个很蠢的问题:我忘了某个对象能不能直接调用一个属性,结果写完一跑就报错。那一刻我才想起来——哎呀,其实 Python 里不是有现成的工具帮我查的嘛,就是 help() 和 dir() 这俩函数。很多人可能平时写代码时没太注意用,但说实话,这两个小东西就是你的随身“说明书”和“目录表”,尤其是当你临时抱佛脚、记不清 API 的时候,简直救命。
help():你的随身字典
先说 **help()**。它的本质就是把对象的文档(docstring)翻出来给你看。比如我当时就是忘了 str 对象到底有啥方法,于是我试了一下:
执行之后,控制台噼里啪啦输出一大段,告诉你 str 是个什么类型,它的构造函数怎么用,它里面的方法列表一大堆全都列出来。比如 capitalize()、join()、split() 这些方法,都会带上简单的解释。
这就像是你临时想查一个电器的说明书,但你又懒得去翻纸质手册,直接喊一声 help,Python 就把内容丢你脸上,省心。
而且 help() 还支持查单个方法,比如:
这个时候输出的就会很简洁,只告诉你 upper() 是干嘛的:返回一个全大写的新字符串。对于刚学 Python 的人,或者你记性不好(比如我),这真的太方便了。
我经常开玩笑说,help() 是最便宜的“查 API 服务”,不用联网,不用去 Google,直接内置。
dir():像目录索引一样的存在
然后就是 **dir()**。这个函数其实比 help() 更常用,它干的事情简单粗暴——告诉你某个对象“有什么”。比如:
执行结果是一个列表,里面全是字符串的方法名字:'upper'、'lower'、'split'、'replace'... 数不胜数。它不会告诉你具体干啥,但至少你知道这玩意儿能干啥,剩下的再配合 help() 就齐活了。
当时我就是写了一个 DataFrame,然后忘了 pandas 里 head() 是不是对象方法,结果我就敲了:
一眼扫过去,head 确实在里面,心里就踏实了。你说要是没有 dir(),我非得去翻文档,那得多浪费时间。
help() 和 dir() 配合使用
我觉得这俩工具特别像“查字典”的流程。dir() 就好比翻目录,先看这本书有多少章节和小节;而 help() 就是点进去看具体解释。日常开发中,尤其你用到一些三方库,第一次接触,不熟悉 API,最笨但最稳的办法就是先来一发 dir() 看结构,然后再 help() 看细节。
举个例子,我第一次用 Python 内置的 re 模块(正则表达式),完全懵逼,就这么查的:
前者告诉我模块里有 match、search、findall 之类的函数,后者再给我解释 search 的参数和返回值。这样一通操作下来,基本就能搞明白用法了。
一些有意思的小技巧
写代码久了,你会发现 help() 和 dir() 还有一些骚操作。
-
对模块用 dir()比如 dir(math),你能直接看到所有数学函数:sin、cos、sqrt... 就像在 Python 内部把 API 一次性甩给你。
-
对实例用 help()有人以为 help() 只能查类,其实你可以直接 help("hello"),Python 会自动根据对象找到对应的类文档,非常智能。
-
help() 的交互模式在 REPL 里(就是命令行交互模式),你直接敲 help(),它会进入一个交互式的帮助系统,你可以在里面搜索关键字,比如输入 modules 就能看到所有已加载的模块。这功能虽然不常用,但有时候蛮有意思。
说了这么多,其实我想表达的是,很多初学者总觉得写代码要把 API 都背下来,动不动背不住就怀疑人生。但实际上,老程序员也记不住,我们只是习惯了用工具去查。help() 和 dir() 就是这种“救火工具”,不用联网,也不需要 IDE 提示,随手一敲就能解决问题。
我那天在咖啡店调 bug,最后就是靠 dir() 找到我忘了的方法名字,再用 help() 确认参数怎么写,问题轻松解决,然后安心去点了杯美式。
以上就是“解释Python中的Help()函数和Dir()函数!”的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://www.phpxs.com/post/13587/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料