IPython简要入门

IPython增强了python自带的Console的功能,下面的语法只在IPython中有效。

获取帮助

使用问号获取全局帮助信息。

In [1]: ?

在对象前面或者后面加上?来获取对象的相关帮助信息:

In [6]: object?
Docstring: The most base type
Type:      type

使用??可以获取对象的详细信息,甚至会直接打印源码信息:

In[1]: import collections
In[2]: collection.Counter??

Init signature: collections.Counter(*args, **kwds)
Source:
class Counter(dict):
    '''Dict subclass for counting hashable items.  Sometimes called a bag
    or multiset.  Elements are stored as dictionary keys and their counts
    are stored as dictionary values.

    >>> c = Counter('abcdeabcdabcaba')  # count elements from a string

    >>> c.most_common(3)                # three most common elements
    [('a', 5), ('b', 4), ('c', 3)]
    >>> sorted(c)                       # list all unique elements
    ['a', 'b', 'c', 'd', 'e']
    >>> ''.join(sorted(c.elements()))   # list elements with repetitions
    'aaaaabbbbcccdde'
    ...

还可以使用*进行模糊查询:

In [24]: *int*?
FloatingPointError
int
print

shell赋值

在交互过程中我们可能需要操作底层shell,IPython通过使用!来支持。 例如,显示当前路径

In[1]: !pwd
/User/home/

改变当前目录:

In[1]: !cd /var/etc

或者编辑文件:

In[1]: !vim myfile.txt

在IPython的命令行中还可以使用$variable或者{variable}的方式来引用变量,例如:

In[1]: file = 'myfile.txt'

In[2]: !mv $file {file.upper()}

shell命令也可以出现在!=右边,这种情况下命令的结果将赋值给左边的对象。

In[1]: my_files != ls

还可以组合使用:

my_files =! ls ~/
b = "backup file"
for i,file in enumerate(my_file):
    raw = !echo $backup $file
    !cp $file {file.split('.')[0]+'.bak'}

魔法函数

IPython还提供了一些特殊的魔法函数,它们的语法与shell类似,但是底层还是Python实现的。

魔法函数以%或者%%开始。

以单个%开始的魔法函数必须位于同一行。

In[1]: %xmode
Exception reporting mode: Verbose

并且支持赋值操作:

In [1]: results = %timeit -r1 -n1 -o list(range(1000))
1 loops, best of 1: 21.1 µs per loop

In [2]: results
Out[2]: <TimeitResult : 1 loops, best of 1: 21.1 µs per loop>

以两个%开始的魔法函数支持跨行,但是不支持赋值操作。

In[1]: %%bash
...  : echo "My shell is:" $SHELL
...  : echo "My disk usage is:"
...  : df -h
My shell is: /usr/local/bin/bash
My disk usage is:
Filesystem      Size   Used  Avail Capacity  iused   ifree %iused  Mounted on
/dev/disk1     233Gi  216Gi   16Gi    94% 56788108 4190706   93%   /
devfs          190Ki  190Ki    0Bi   100%      656       0  100%   /dev
map -hosts       0Bi    0Bi    0Bi   100%        0       0  100%   /net
map auto_home    0Bi    0Bi    0Bi   100%        0       0  100%   /hom

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏iOS122-移动混合开发研究院

【自问自答】关于 Swift 的几个疑问

感觉自己给自己释疑,也是一个极为有趣的过程。这次,我还新增了“猜想”一栏,来尝试回答一些暂时没有足够资料支撑的问题。 Swift 版本是:4.0.3。不同版本的...

3156
来自专栏wannshan(javaer,RPC)

dubbo通信消息解析过程分析(1)

由于rpc底层涉及网络编程接口,线程模型,网络数据结构,服务协议,细到字节的处理。牵涉内容较多,今天就先从一个点说起。 说说,dubbo通过netty框架做传...

4866
来自专栏蓝天

boost::bind和boost::function使用示例

C++11已支持bind和function,之前的不支持,但可以借助boost达到同样目的。看如下两段代码:

822
来自专栏后端之路

Excel导入改善

最近由于上线的需要,对于excel导入导出的效率提出了要求。 那么一方面我们对于db落库的业务尽量走批量, 其次对于导入数据的校验以及对应成实体也做出了改善。...

5657
来自专栏Android知识点总结

Java总结IO篇之File类和Properties类

打开颜色选择器 :读流I-->字符串分割-->字符串存入Map-->使用Map对象还原用户配置 修改配置时 :写流O-->创建Map对象-->字符...

1682
来自专栏冰霜之地

高效的序列化/反序列化数据方式 Protobuf

上篇文章中其实已经讲过了 encode 的过程,这篇文章以 golang 为例,从代码实现的层面讲讲序列化和反序列化的过程。

5175
来自专栏菩提树下的杨过

rpc框架之 thrift 学习 2 - 基本概念

thrift的基本构架: ? 上图源自:http://jnb.ociweb.com/jnb/jnbJun2009.html 底层Underlying I/O以上...

2477
来自专栏Android 研究

OKHttp源码解析(五)--OKIO简介及FileSystem

okio是由square公司开发的,它补充了java.io和java.nio的不足,以便能够更加方便,快速的访问、存储和处理你的数据。OKHttp底层也是用该库...

1802
来自专栏mini188

java中的锁

java中有哪些锁 这个问题在我看了一遍<java并发编程>后尽然无法回答,说明自己对于锁的概念了解的不够。于是再次翻看了一下书里的内容,突然有点打开脑门的感觉...

3789
来自专栏ImportSource

Junit 5新特性全集

本文略长,但都是大白话,如果你能一口气看完,你赢了。 如果你来不及看这么长,那么建议你滑到文末,直接看黑体部分就知道大概了。 在5中的一个测试类的基本生命周期是...

47612

扫码关注云+社区

领取腾讯云代金券