前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python交互模式下小技巧

python交互模式下小技巧

作者头像
qsjs
发布2020-06-09 09:03:04
4990
发布2020-06-09 09:03:04
举报
文章被收录于专栏:MyPanda的学习笔记

在遇到执行python程序报错的时候,我们很有可能需要到交互模式下去进行排错,在这里介绍几个交互模式下的小技巧,希望能够帮到你:

如果不记得某个模块的名字,用 help("modules KEYWORD") 来通过关键字找到模块的名字;

每个模块都包含有很多的属性和方法,为了过滤出来需要的方法和属性,可以用: [x for x in dir(MODULE) if x.__contains__(KEYWORDS)] #基于属性的名字过滤; [name for name,obj in MODULENAME.__dict__.items() if isinstance(obj,types.BuiltinFunctionType) ] #基于属性的类型过滤 如果需要既基于名称,又基于类型来过滤,把两者联合起来使用就可以了.

在默认情况下,交互模式没有启用自动补齐的功能,但是我们可以手动开启,方法很简单:

代码语言:javascript
复制
import readline,rlcompleter  #rlcompleter模块中Completer类的complete方法会返回可能的结果,其被readline模块所使用;
readline.parse_and_bind("tab: complete")    #该语句在rlcompleter的帮助文档中,直接引用就可以

在python的交互模式下,有时候免不了需要查看os下的文件,这时候我们无需退出python交互模式就可以,只需要使用python的os 模块就可以了. 常用os模块中的system 方法: os.system("OS_COMMAND")

查看当前的namespace中相应模块的路径, 直接输入 module的名字就可以了.

在常见的"ImportError: No module named YYY" 之类的错误中,我们有时候会看到 对应发生错误的语句是: import XXX.YYY 之类的,那么怎么理解 XXX.YYY之类的语句呢? 因为 sys.path 支持目录,所以”XXX.YYY“ 表示 XXX目录下的YYY.py 文件,理解这一点很重要. 因为 导入的时候,查找的模块名称如果和目录匹配的话,那么会调用目录下的 __init__.py 来完成初始化,此时导入的模块对应的文件是 __init__.py ,这个文件甚至可以是一个空的.py文件; 而我们知道每一个文件都可以导入为一个模块,因此,该目录下的其他.py文件要导入为模块的时候就需要用: XXX.YYY这种模式,而如果有多层子目录,那么就变成了: XXX.YYY.ZZZ... 这种模式, 这些都是合法的用法.

在导入模块的时候,会发生初始化,在这个初始化的过程中: 普通函数的定义,类的定义等都不会被执行,而模块文件中的主语句会被执行。 理解这些才能够进一步理解模块导入过程发生了什么. 从而才能更好的进行排错.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档