当前位置: 首页 > news >正文

IPython 使用技巧整理

IPython 是一个强大的交互式 Python shell,广泛用于数据分析、科学计算和开发工作。本文将整理一些 IPython 的实用技巧,帮助你更高效地使用 IPython。
在这里插入图片描述

目录

  1. 快速启动和退出
  2. 魔法命令
  3. 高效的代码编写
  4. 变量和对象信息
  5. 历史命令
  6. IPython 扩展
  7. 错误调试
  8. 与 Jupyter Notebook 的集成

1. 快速启动和退出

启动 IPython

你可以在终端中直接输入 ipython 启动 IPython shell:

$ ipython

退出 IPython

你可以使用以下命令退出 IPython:

exit

或者

quit

2. 魔法命令

IPython 提供了丰富的魔法命令,可以大大提升你的工作效率。这些命令以 %%% 开头。

查看所有魔法命令

你可以使用 %lsmagic 查看所有可用的魔法命令:

%lsmagic

常用魔法命令

  • %timeit:用于计时一段代码的执行时间。

    %timeit sum(range(1000))
    
  • %who%whos:查看当前命名空间中的变量。

    %who
    %whos
    
  • %reset:重置命名空间,删除所有变量。

    %reset -f
    

3. 高效的代码编写

自动补全

在 IPython 中,你可以通过按 Tab 键自动补全变量名、函数名等。这在编写长变量名或不确定具体名称时非常有用。

多行编辑

使用 Ctrl+Enter 可以在当前行的下方插入新行,并保持在同一代码单元内继续编辑。这样可以方便地编写多行代码,而不必每次都按 Enter 执行。

4. 变量和对象信息

获取变量类型和内容

你可以使用 type() 获取变量的类型,用 print() 输出变量内容:

a = 42
print(type(a))  # <class 'int'>
print(a)        # 42

对象的详细信息

使用 ? 可以获取对象的详细信息,如文档字符串和定义位置:

a?

使用 ?? 可以获取更多详细信息,包括源代码(如果可用):

a??

5. 历史命令

查看命令历史

使用 %history 可以查看命令历史:

%history

运行历史命令

可以使用 !n(其中 n 是命令编号)运行历史命令:

!10

导出历史命令

可以将命令历史导出到文件:

%history -f history.py

6. IPython 扩展

加载扩展

你可以使用 %load_ext 加载 IPython 扩展。例如,加载 line_profiler 扩展:

%load_ext line_profiler

卸载扩展

使用 %unload_ext 卸载扩展:

%unload_ext line_profiler

7. 错误调试

捕获和调试异常

IPython 提供了 %debug 魔法命令,用于在异常发生后进入调试模式:

%debug

手动调试

可以在任意代码位置插入 import pdb; pdb.set_trace() 进入调试模式:

import pdb; pdb.set_trace()

8. 与 Jupyter Notebook 的集成

启动 Jupyter Notebook

在终端中输入 jupyter notebook 启动 Jupyter Notebook 服务器:

$ jupyter notebook

在 Notebook 中使用 IPython 魔法命令

你可以在 Jupyter Notebook 中使用 IPython 的魔法命令,例如:

%timeit sum(range(1000))

扩展 Jupyter Notebook 功能

你可以安装和使用 Jupyter Notebook 的扩展,例如 jupyter_contrib_nbextensions

pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user

然后在 Notebook 中启用所需的扩展。

结语

本文整理了一些 IPython 的实用技巧,希望能帮助你更高效地使用 IPython。无论是数据分析、科学计算还是开发工作,IPython 都是一个强大的工具。通过掌握这些技巧,你可以充分利用 IPython 提供的功能,提高工作效率。

相关文章:

  • Linux系统之mtr命令的基本使用
  • 超多细节—app图标拖动排序实现详解
  • 简析:分账系统
  • 测试testing06182
  • 暑期计划打卡清单表怎么写 暑期待办计划清单
  • 干G货,性能测试基本方法和原则,
  • shell命令(进程管理和用户管理)
  • 【多线程】线程状态
  • redis击穿问题使用锁实现方案
  • 零散的面试题
  • 揭示西周与汉唐时期的纺织工艺
  • 软件开发小程序正规公司流程是什么样的?
  • node通过axios调用realworld接口
  • 【UE4】角色御剑飞行的蓝图实现
  • 多模态大模型通用模式
  • 【Amaple教程】5. 插件
  • AWS实战 - 利用IAM对S3做访问控制
  • C++类的相互关联
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • javascript 总结(常用工具类的封装)
  • Java超时控制的实现
  • js正则,这点儿就够用了
  • leetcode386. Lexicographical Numbers
  • MySQL-事务管理(基础)
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • 初识 webpack
  • 从零搭建Koa2 Server
  • 区块链技术特点之去中心化特性
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 数据可视化之 Sankey 桑基图的实现
  • 转载:[译] 内容加速黑科技趣谈
  • 做一名精致的JavaScripter 01:JavaScript简介
  • NLPIR智能语义技术让大数据挖掘更简单
  • Spring Batch JSON 支持
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​​​【收录 Hello 算法】10.4 哈希优化策略
  • #Linux(make工具和makefile文件以及makefile语法)
  • #Lua:Lua调用C++生成的DLL库
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (bean配置类的注解开发)学习Spring的第十三天
  • (ZT)出版业改革:该死的死,该生的生
  • (利用IDEA+Maven)定制属于自己的jar包
  • (算法)求1到1亿间的质数或素数
  • (推荐)叮当——中文语音对话机器人
  • (一)WLAN定义和基本架构转
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET Core引入性能分析引导优化
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .NET 某和OA办公系统全局绕过漏洞分析
  • .NET 事件模型教程(二)