IPython 的一些使用方法

1. _ 的使用

在IPyhton 中,有的时候会有输出值(在jupyter notebook 中会有表示,out ),这些输出值没有变量来接收它,就直接输出了。

1.1 _本身的使用

在IPython 里,可以用 _ 来调用上一次的输出值。

__ ,两个的话,可以调用倒数第二次的输出值。

_ ,三个就是可调用倒数第三次的输出值。

四个就不行了,而且要注意,如果在in 的cell (代码框)里只打一个_ ,它也有out 值,自己试的时候记得算好。

因为这只是IPython 的功能,就不举例了。

1.2 _dh

是 directory history 的意思,可以显示我们操作目录的变化历史。

比如当前目录是C:\Users\dad,

cd d:\
_dh
['C:\\Users\\dad', 'd:\\']

1.3 _oh

这是output history 的意思,就是output 的值得历史记录。

不太好演示就不写了,试试就知道。

2. !的使用

在IPython 里,我们可以使用 !COMMAND 这种形式来调用当前shell 的命令。

比如在Linux 的bash 下,在IPython 中打出
!touch a.txt
如果当前目录没有a.txt 就在当前目录创造一个新的,名字叫a.txt 的文档。如果有的话,就修改它的时间戳(atime,ctime,mtime)。

比如一般在Linux 的bash 下,还可能用到
!ls -l
来查看当前目录的内容什么的。

还有一种,比如我想要这个目录下,.py 的文件都有啥,可以使用
fileslist = !ls -l | grep .py
然后print 一下fileslist 就知道都有什么.py 的文件了。

3. 魔术方法

魔术方法在IPython 中要分成line magic 和cell magic 。
前者是只对当前行执行的方法,前缀只要用一个% 就行,但是代码不能超过一行。
后者是对于当前框内的代码执行的方法(cell 就是指框),前缀是%% 。

3.1 %timeit 和%%timeit

他俩的区别已经说了,一个是针对当前行,一个是针对当前框。

%timeit 可以通过一系列的计算,测出一个算法运行的平均时间,测算次数根据当前计算机的cpu等条件而定。可以用做算法的比较。

%timeit (-1 in range(10000))
# 加()是因为,要保证line magic 后面的代码是一个整体,没有歧义。
435 ns ± 5.8 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

就是%timeit 计算这一行代码,跑七趟,每次1000000 次循环,平均每次用了多少时间,上面写了435 ns 。

%%timeit n = 10000
-1 in range(n)
438 ns ± 14.3 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

也可以用cell magic ,在%%timeit 后面给n 赋值,然后在下面执行,这是另一种形式,其实和上面那种line magic 是一样的作用。

%timeit 还有-n 和-r 的用法。-n 是指定跑多少趟,-r 是指定每趟循环多少次,并显示最快和最慢的差值。

%timeit -n 7 -r 10000 (-1 in range(10000))
The slowest run took 194.57 times longer than the fastest. This could mean that an intermediate result is being cached.
599 ns ± 1.04 µs per loop (mean ± std. dev. of 10000 runs, 7 loops each)

3.2 alias

就是定义一个command,和Linux 里面的用法一样,Windows 也用这种用法。

alias cdd cd d:\ # 执行它
cdd
d:\ # 就是使用新创建的cdd 这个命令把当前目录改为了d盘

3.3 %pwd

显示当前的文件目录。

3.4 %%js

可以执行JavaScript 的脚本。
例如,

%%js
alert('fuck')

就会弹框,用notebook 就能显示出来,可以试试。

猜你喜欢

转载自blog.csdn.net/LittleHuang950620/article/details/81636220