ipython的用法详解

简介: ipython是一个升级版的交互式python命令行工具.ipython安装pip install ipython等到命令执行完成后显示successfully表示完装成功在命令提示符下输入ipython就可以启动ipython了其与原版python命令行工具不同在于ipython的提示符变成了in和out.

ipython是一个升级版的交互式python命令行工具.

ipython安装

pip install ipython

等到命令执行完成后显示successfully表示完装成功

img_c1c570f03a4c91586b3702e5887f8b9f.png

在命令提示符下输入ipython就可以启动ipython了

其与原版python命令行工具不同在于ipython的提示符变成了in和out.

in为输入命令的地方,out为命令执行完成后输出的地方

img_517fb2472ac72186ce9b1f2b510dbe6f.png

ipython的特点

tab键自动补全一些常用的方法

img_a32c09cece6d848868bb158bf9f1c89a.png

支持一些系统命令

    In [2]: pwd             # 显示当前所在目录
    Out[2]: '/root'
    
    In [3]: cd ..           # 返回当前目录的上一级目录
    /   
   

执行系统命令(!)

    In [6]: !ifconfig
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.81.10  netmask 255.255.255.0  broadcast 192.168.81.255
            inet6 fe80::a545:8b99:d507:4d0f  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:95:d5:31  txqueuelen 1000  (Ethernet)
            RX packets 12851  bytes 9887304 (9.4 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 7172  bytes 1546188 (1.4 MiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1  (Local Loopback)
            RX packets 140  bytes 12132 (11.8 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 140  bytes 12132 (11.8 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    In [7]: !ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:95:d5:31 brd ff:ff:ff:ff:ff:ff
        inet 192.168.81.10/24 brd 192.168.81.255 scope global ens33
           valid_lft forever preferred_lft forever
        inet6 fe80::a545:8b99:d507:4d0f/64 scope link 
           valid_lft forever preferred_lft forever
    
    In [8]: !cat /etc/sysconfig/selinux
    
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #     enforcing - SELinux security policy is enforced.
    #     permissive - SELinux prints warnings instead of enforcing.
    #     disabled - No SELinux policy is loaded.
    SELINUX=disabled
    # SELINUXTYPE= can take one of three two values:
    #     targeted - Targeted processes are protected,
    #     minimum - Modification of targeted policy. Only selected processes are protected. 
    #     mls - Multi Level Security protection.
    SELINUXTYPE=targeted 

?命令(内省,命令空间搜索)

    In [12]: l1?
    Type:        list
    String form: [1, 2, 3, 4]
    Length:      4
    Docstring:  
    list() -> new empty list
    list(iterable) -> new list initialized from iterable's items
    
    In [13]: def func():
        ...:     print("hello world")
        ...:     
    
    In [14]: func?
    Signature: func()
    Docstring: <no docstring>
    File:      /<ipython-input-13-4475a92670e6>
    Type:      function
    
    In [15]: func??             # 打印函数的源码
    Signature: func()
    Source:   
    def func():
        print("hello world")
    File:      /<ipython-input-13-4475a92670e6>
    Type:      function
    
    In [17]: l1.a*?
    l1.append
    
    In [18]: l1.p*?
    l1.pop
       
    In [19]: l1.__*__?
    l1.__add__
    l1.__class__
    l1.__contains__
    l1.__delattr__
    l1.__delitem__
    l1.__dir__
    l1.__doc__
    l1.__eq__
    l1.__format__
    l1.__ge__
    l1.__getattribute__
    l1.__getitem__
    l1.__gt__
    l1.__hash__
    l1.__iadd__
    l1.__imul__
    l1.__init__
    l1.__init_subclass__
    l1.__iter__
    l1.__le__
    l1.__len__
    l1.__lt__
    l1.__mul__
    l1.__ne__
    l1.__new__
    l1.__reduce__
    l1.__reduce_ex__
    l1.__repr__
    l1.__reversed__
    l1.__rmul__
    l1.__setattr__
    l1.__setitem__
    l1.__sizeof__
    l1.__str__
    l1.__subclasshook__

%run命令执行文件代码

    In [29]: !vi test.py
    
    In [30]: !cat test.py
    def func1():
        print("hello world")
    
    func1()
    
    In [31]: %run "test.py"
    hello world

%paste和%cpaste命令执行剪帖板代码

    In [2]: %paste
    def func1():
        print("hello world")
    
    func1()
    
    ## -- End pasted text --
    hello world 

与编辑器和IDE交互

魔术命令:%timeit %pdb

    In [37]: %timeit a+b
    47.1 ns ± 0.955 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
    
    pdb是python debug的简写,一般用于排错

使用命令历史

使用上箭头或下箭头可以查看上一条命令或下一条命令的历史

输入与输出变量

    In [40]: !ls
    1    boot  etc   lib    media  opt   root  sbin  sys      tmp  var
    bin  dev   home  lib64  mnt    proc  run   srv   test.py  usr
    
    In [41]: _                  # 执行前面倒数第一条命令
    Out[41]: 3
    
    In [47]: !ls
    1    boot  etc   lib    media  opt   root  sbin  sys      tmp  var
    bin  dev   home  lib64  mnt    proc  run   srv   test.py  usr
    
    In [48]: print("hello world")
    hello world
    
    In [49]: !ls
    1    boot  etc   lib    media  opt   root  sbin  sys      tmp  var
    bin  dev   home  lib64  mnt    proc  run   srv   test.py  usr
    
    In [50]: __
    Out[50]: 3
    
    
    In [54]: _i48               # 执行第48条命令
    Out[54]: 'print("hello world")'

目录书签系统%bookmark

    In [55]: %bookmark local /usr/local         # 定义local书签
    
    In [56]: %bookmark selinux /etc/sysconfig/selinux   # 定义selinux书签
    
    In [57]: %bookmark -l       # 显示所有的书签
    Current bookmarks:
    local   -> /usr/local
    selinux -> /etc/sysconfig/selinux
    
    In [55]: %bookmark local /usr/local
    
    In [56]: %bookmark sysconfig /etc/sysconfig
    
    In [57]: %bookmark -l
    Current bookmarks:
    local   -> /usr/local
    sysconfig -> /etc/sysconfig
    
    In [58]: pwd
    Out[58]: '/'
    
    In [59]: cd local
    (bookmark:local) -> /usr/local
    /usr/local
    
    In [60]: pwd
    Out[60]: '/usr/local'
    
    In [61]: cd sysconfig
    (bookmark:sysconfig) -> /etc/sysconfig
    /etc/sysconfig
    
    In [62]: pwd
    Out[62]: '/etc/sysconfig'

ipython notebook

安装jupyter

pip install jupyter

运行界面

img_f08a77e2e4222a50fc6603f5d14d4a65.png

img_9ba7baa85bc94b1965efaa1ed9fca089.png

img_dd5a0d27ad430977698b334be94a1c1c.png

ipython常用的魔术命令

%quickref                   显示ipython的快速参考
%magic                      显示所有的魔术命令的详细文档
%debug                      从最新的异常跟踪的底部进入交互式调试器
%hist                       打印命令的输入(可选输出)历史
%pdb                        在异常发生后自动进入调试器
%paste                      执行剪贴板中的python代码
%cpaste                     打开一个特殊提示符以便手工粘贴待执行的python代码
%reset                      删除interactive命名空间中的全部变量/名称
%page OBJECT                通过分页器打印输出object
%run script.py              在ipython中执行一个python脚本文件
%prun statement             通过cprofile执行statement,并打印分析器的输出结果
%time statement             报告statement的执行时间
%timeit statement           多次执行statement以计算系统平均执行时间.对那么执行时间非常小的代码很有用
%who,%who_id,%whos          显示interactive命名空间中定义的变量,信息级别/冗余度可变
%xdel variable              删除variable,并尝试清除其在ipython中的对象上的一切引用

python调试器命令

h(help)                 显示命令列表
help command            显示command的文档
c(continue)             恢复程序的执行
q(quit)                 退出调试器,不再执行任何代码
b(break) n              在当前文件的第n行设置一个断点
b path/to/file.py:n     在指定文件的第n行设置一个断点
s(step)                 单步进入函数调用
n(next)                 执行当前行,并前进到当前级别的下一行
u(up)/d(down)           在函数调用栈中向上或向下移动
a(args)                 显示当前函数的参数
debug statement         在新的递归调试器中调用语句statement
l(list) statement       显示当前行,以及当前栈级别上的上下文参考代码
w(where)                打印当前位置的完整栈跟踪(包括上下文参考代码)

ipython快捷键

Ctrl+p或者向上键头            向后搜索命令历史中以当前输入的文本开头的命令
Ctrl+n或者向上键头            向前搜索命令历史中以当前输入的文本开头的命令
Ctrl+r                      按行读取的反向历史搜索(部分匹配)
Ctrl+Shift+variable         从剪贴板粘贴文本
Ctrl+c                      中止当前正在执行的代码
Ctrl+a                      把光标移动到行首
Ctrl+e                      把光标移动到行尾
Ctrl+k                      删除从光标开始到行尾的文本
Ctrl+u                      清除当前行的所有内容
Ctrl+f                      将光标向前移动一个字符
Ctrl+b                      将光标向后移动一个字符
Ctrl+l                      清屏
目录
相关文章
10、pip换源加速下载的方式
10、pip换源加速下载的方式
10、pip换源加速下载的方式
|
Ubuntu 开发工具
Ubuntu更换阿里云软件源
Ubuntu更换阿里云软件源
141441 0
|
10月前
|
人工智能 自然语言处理 算法
Devika AI:开源的 AI 软件开发工具,理解和执行复杂的人类指令
Devika AI 是一款开源的 AI 软件开发工具,能够理解和执行复杂的人类指令。它通过分解任务、信息搜集和代码生成,帮助开发者提高效率,减少人工干预。本文将详细介绍 Devika AI 的功能、技术原理以及如何运行和配置该工具。
314 9
Devika AI:开源的 AI 软件开发工具,理解和执行复杂的人类指令
|
7月前
|
缓存 JSON JavaScript
体育应用怎么通过API接口接入数据源与直播源
本文介绍了体育类应用接入数据源与直播源的API接口方案。主要包括:1) 数据源API接入,涉及选择提供商、接入流程及常见数据类型;2) 直播源接入,涵盖直播源类型、提供商和技术方案;3) 技术实现要点,如数据缓存、实时更新机制和安全性考虑;4) 成本优化建议。附有HLS播放示例及Node.js完整集成代码,帮助开发者高效实现体育应用功能。
443 21
|
10月前
|
监控 负载均衡 安全
什么是DDoS攻击及如何防护DDOS攻击
通过上述防护措施,企业和组织可以构建全面的DDoS防护体系,有效抵御各类DDoS攻击,确保网络和服务的稳定运行。
7076 10
|
Linux 数据处理 Windows
探索Linux中的hexdump命令:数据处理的瑞士军刀
`hexdump`是Linux下的命令行工具,用于以十六进制格式显示和解析二进制文件内容,适用于分析文件结构、查找特定字节序列。它支持多种显示格式(如八进制、十进制)、数据分组和过滤功能。常用参数包括`-C`(混合十六进制和ASCII显示)、`-d`(十进制格式)、`-o`(八进制格式)、`-s`(跳过字节)、`-n`(显示字节数)。通过与`grep`等工具结合使用,可实现更复杂的任务。注意文件大小和选择合适显示格式,对于大文件使用`-n`限制输出。
|
SQL 数据挖掘 大数据
如何在 SQL Server 中使用 `OFFSET` 和 `FETCH`
【8月更文挑战第10天】
2608 8
|
机器学习/深度学习 计算机视觉 Python
opencv环境搭建-python
本文介绍了如何在Python环境中安装OpenCV库及其相关扩展库,包括numpy和matplotlib,并提供了基础的图像读取和显示代码示例,同时强调了使用Python虚拟环境的重要性和基本操作。
|
Java 编译器 Shell
【Python 基础教程 04】超详细Python编程教程:初学者入门至全面了解Python 解析器( CPython、IPython、Jython和PyPy)
【Python 基础教程 04】超详细Python编程教程:初学者入门至全面了解Python 解析器( CPython、IPython、Jython和PyPy)
447 0
|
存储 JSON 前端开发
谁偷了我的1天,JSON格式化时区问题
谁偷了我的1天,JSON格式化时区问题
1576 0
谁偷了我的1天,JSON格式化时区问题