第二章 Pyton语言基础、Ipython及Jupyter notebook(?功能,%run命令,魔法函数)

?功能

  • 在一个变量名的前后使用问号(?)可以显示一些关于该对象的概要信息:
b=[1,2,3]
b?

在这里插入图片描述

  • 假设已经写好了如下函数(你可以在Ipython或jup中复现):
def add_numbers(a,b):
    """
    Add two numbers together

    Returns
    -------
    the_sum : type of arguments
    """
    return a + b
  • 然后使用?来显示文档字符串
In [11]: add_numbers?
Signature: add_numbers(a, b)
Docstring:
Add two numbers together

Returns
-------
the_sum : type of arguments
File:      <ipython-input-9-6a548a216e27>
Type:      function
  • 使用双问号??可以显示函数的源代码:
Signature: add_numbers(a, b)
Source:   
def add_numbers(a,b):
    """
    Add two numbers together

    Returns
    -------
    the_sum : type of arguments
    """
    return a + b
File:      d:\pythonproject\利用python进行数据分析\<ipython-input-1-a35364d424b1>
Type:      function
  • ?有一个终极用途,可以像Unix或Windows命令行一行搜索IPython命名空间。把一些字符和通配符(星好*)结合在一起,会显示所有匹配通配符表达式的命名。例如,我们可以得到NumPy顶层函数中包含load的函数名列表:
In [13]: np.*load*?
np.__loader__
np.load
np.loads
np.loadtxt
np.pkgload

2.2.5 %run命令

  • 可以在IPython会话中使用%run命令运行任意的Python程序文件。假设你已经在ipython_script_test.py中写好了如下的简单脚本:
def f(x, y, z):
    return (x + y) / z

a = 5
b = 6
c = 7.5

result = f(a, b, c)
  • 可以将文件名作为参数传给%run命令:
 %run ipython_script_test.py #该文件要放在同一文件夹下,比如我是直接放在利用python进行数据分析下面的。在利用python进行数据分析下新建一个文件夹,再放入该.py文件是无法调用的
  • 脚本是在空白命名空间(没有导入模块或其他定义变量)中运行的,因此这个行为与在命名行中使用python script.py来运行程序是相同的。文件中定义的所有变量(导入的、函数中的、全局定义的)在运行后,可以在IPython命令行中使用(除非出现某种异常):
    在这里插入图片描述
  • 如果一个Python脚本需要命令行提供参数(通过sys.argv获得),那么则需要在命令行的文件路径后面加上参数进行传递:
  • 如果你想让待运行的脚本使用交互式IPython命名空间中已有的变量,请使用%run -i替代普通的%run命令。
  • 在Jupyter notebook中,如果你想将脚本导入一个代码单元,可以使用%load魔法函数:
>>> %load ipython_script_test.py

    def f(x, y, z):
        return (x + y) / z

    a = 5
    b = 6
    c = 7.5

    result = f(a, b, c)

中断运行中的代码

  • 在任意代码运行时按下Ctrl-C,无论脚本是通过%run或是其他长命令运行的,都将引起KeyboardInterrupt。除了某些特殊情况,这将导致所有的Python程序立刻停止运行。
  • 当一段Python代码被其他已经编译的扩展模块调用时,按下Ctrl-C并不会让程序立即停止运行。在这些情况下,你需要等到控制流重新返回Python解释器,在更糟糕的情况下可能要强制结束Python进程。

执行剪贴板中的程序

  • 如果你正在使用Jupyter notebook,你可以将代码复制粘贴到代码单元,然后运行。在IPython中可以直接运行剪贴板中的程序。假设你在其他的应用中写了如下代码:
x = 5
y = 7
if x > 5:
    x += 1

    y = 8
  • 使用以上代码,最简单的方法就是%paste和%cpaste魔术函数。%paste会获得剪贴板中的所有文本,并在命令行中作为一个代码块去执行:
    在这里插入图片描述
    不知道为何会报错,我已经在其他地方复制了上面的代码,用该魔法函数时还是报错了

终端快捷键

  • Ipython有很多用于浏览器提示、查看历史命名的快捷键(Emacs文本编辑器和Unix bash命令行的使用者会很熟悉)。
    在这里插入图片描述

关于魔法命令

  • IPython的特殊命令(没有内建到Python自身中去)被称为“魔术”命令。这些命令被设计用于简化常见任务,确保用户更容易控制IPython系统的行为。魔术命令的前缀符号是百分号%。例如,你可以使用%timeit来检查一段Python语句的执行时间,比如一个矩阵操作(后续将会详细讨论%timeit):
In [20]: a = np.random.randn(100, 100)

In [20]: %timeit np.dot(a, a)
10000 loops, best of 3: 20.9 µs per loop
  • 魔术命令可以看作是IPython系统内部的命令行程序。大多数魔术命令都可以使用?查看额外的“命令行”选项:
In [21]: %debug?
  • 魔术函数也可以不加百分号%就使用,只要没有变量被定义为与魔术函数相同的名字即可。这种特性被称为自动魔术,通过%automagic进行启用/禁用关。
  • 一些魔法函数也像Python函数一样,其输出可以赋给一个变量。
In [22]: %pwd
Out[22]: '/home/wesm/code/pydata-book

In [23]: foo = %pwd

In [24]: foo
Out[24]: '/home/wesm/code/pydata-book'

上面的代码未能运行成功

  • 由于IPython的文档可以在系统内访问,建议使用%quickref或者%magic探索所有的特殊命令。
    在这里插入图片描述

matplotlib集成

  • IPython能在分析计算领域流行的原因之一,就是它和数据可视化、用户界面库(如matplotlib)的良好集成。即使你从未使用过matplotlib也不必担心,本书的后续章节会详细谈论该部分内容。%matplotlib魔术函数可以设置matplotlib与IPython命令行Jupyter notebook的集成。这个命令很重要,否则你创建的图可能不会出现(notebook),或者直到结束也无法控制会话(命令行)。
  • 在IPython命令行中,运行%matplotlib命令可以生成多个绘图窗口,而无须干扰控制台的会话。
In [26]: %matplotlib
Using matplotlib backend: Qt4Agg
In [26]: %matplotlib inline
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值