一、ipython简介
关于什么是ipython,本文就不加以介绍了,他是一个非常流行的python解释器,相比于原生的python解释器,有太多优点和长处,因此几乎是python开发人员的必知必会。
1. ipython相比于原生的python有什么优势
- (1) python shell不能在退出保存历史;ipython历史记录自动保存:保存在history.sqlite文件下:可用“”、“”、“”调用最近三次记录;
- (2) python shell不支持tab自动补全;ipython支持tab补全;
- (3) python shell不能快速获取类、函数信息;ipython通过“?”显示对象签名、文档字符串、代码位置,通过“??”显示源代码;
- (4) python shell不能直接执行shell命令,需要借助sys;ipython通过“!”调用系统命令,如“!uptime”;
- (5) 其他ipython有很多magic函数,可通过使用%lsmagic枚举;
%run:运行python文件
%edit:使用编辑器打开当前函数编辑
%save:把某些历史记录保存到文件
%debug:激活debug程序 等等,后面会讲到
- (6)ipython有很多快捷键
- (7)ipython的扩展宏系统、storemagic持久化宏、变量、别名;以及autoreload自动重载等功能;
二、ipython的内省
ipython相较于原生的python,提供了更加强大的内省功能,所谓内省,也称之为内视,即 object introspection,主要有以下一些常见的方法:
object? 或者?object :显示该对象的一些通用信息,注意python里面一切皆对象哦,包括函数、类。
object?? 或者??object:两个问号显示详细信息,如果是类或者是函数,还会显示源代码。即将问号放在前面和后面都可以。
通配符*匹配:如numpy.load? 这会显示所有的包含有load的函数,numpy.*sort? 这会显示所有以sort结尾的函数
三、ipython快捷键
下面介绍一下第一个和第二个快捷键,比如有如下代码:
Ctrl-P 或上箭头键 后向搜索命令历史中以当前输入的文本开头的命令
Ctrl-N 或下箭头键 前向搜索命令历史中以当前输入的文本开头的命令
Ctrl-R 按行读取的反向历史搜索(部分匹配)
Ctrl-Shift-v 从剪贴板粘贴文本
Ctrl-C 中止当前正在执行的代码
Ctrl-A 将光标移动到行首
Ctrl-E 将光标移动到行尾
Ctrl-K 删除从光标开始至行尾的文本
Ctrl-U 清除当前行的所有文本译注12
Ctrl-F 将光标向前移动一个字符
Ctrl-b 将光标向后移动一个字符
Ctrl-L 清屏
四、魔术命令——magic command
所谓的模式命令,是指那些给我们提供方便,轻松控制ipython交互系统的命令,可以这样去理解,魔术命令可以看成是ipython交互环境下面的命令行程序,其中很多还有一些命令行参数选项。
%quickref :可以显示ipython的快速参考
%magic :可以查看到底有哪些模式命令(这个方法会显示每一个命令的详细信息,因此会很多)
%lsmagic :这里只会显示模式命令的名字,会比较简洁,查看起来更方便
%命令? 或者是%命令??:当我们想要查看某一命令的详细信息,我们可以使用同前面类似的方法,在魔术命令后面添加一个或者是两个问号??来查看详细信息。
默认情况下,魔术命令总是以百分号%开头,但这不是必须的,我们也可以不使用百分号,我们也可以直接使用不带百分号的魔术命令,这称之为“自动魔术命令——automagic”如:magic 这会得到和 %magic一样的效果,但是需要注意的是,不使用百分号时,不能出现和魔术命令同名称的变量,否则显示的就是变量了。那到底是使用百分号还是不使用百分号呢?事实上,我们也是可以自由控制的,通过%automagic来控制,
默认情况下,它是开启的,即我们可以使用无%的魔术命令,只要与变量名不冲突即可,我么也可以关闭。
下面介绍一些常见的魔术命令。
- %run——运行一个Python脚本
- %paste或者是%cpaste——执行剪切板中的代码
- %timeit 和%time 检测任意Python语句的执行时间
- %who和%who_ls和%whos——查看当前interactive环境中的变量
- %hist——查看历史命令
- 删除ipython环境中的变量
- 其他常用魔术命令
8、ipython开发环境与cmd之间的互相切换:
在ipython交互情况下,直接输入命令 !cmd 即可进入cmd模式;在cmd模式下直接输入 ipython 可以再次回到 ipython模式
小结
https://blog.51cto.com/u_4296776/5614233