IPython最简洁方便的Python语法测试工具

前言和需求

相信不少人使用JS时,最常用的快捷键是F12。网页调试,不仅可以调试我们的前端页面,对于多数后端JS程序员来讲,我们有个啥语法不确定了,直接开个网页F12确认一下就行了。甚至写了个方法,不确定对不对,直接Console里面测一下也是尝试。

但是,Python,我的朋友,难道必须得开Anacoda/PyCharm,或者常年摆着一个notebook才行吗?显然不可能是这样的。

IPython是我平时实验一些Python语法最常用的方式。而命令行永远是最简单的语法调试测试方式。

安装与启动

首先,确保系统中已安装Python及pip。接着,通过pip安装IPython:

pip install ipython

安装成功后,直接ipython就可以进入python交互命令行了,这个命令行比python的默认命令行友好太多了:

D:\>ipython
Python 3.12.1 (tags/v3.12.1:2305ca5, Dec  7 2023, 22:03:25) [MSC v.1937 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.25.0 -- An enhanced Interactive Python. Type '?' for help.In [1]: import pandasIn [2]: data = [{'col1': 1.0, 'col2': 2.0}]In [4]: pandas.DataFrame(data)
Out[4]:col1  col2
0   1.0   2.0

魔法命令

相比于普通的Python命令行,IPython的一大特色是其“魔法命令”(Magic Commands),以百分号%或双百分号%%开头,用于执行特定操作或改变环境设置。例如可以用于测试函数性能的%timeit:

In [7]: def list_comprehension(n):...:     return [i for _ in range(n) for i in range(10)]...:In [8]: def nested_loop(n):...:     result = []...:     for _ in range(n):...:         for i in range(10):...:             result.append(i)...:     return resultIn [9]: %timeit -n 1000 list_comprehension(10)
1.84 μs ± 343 ns per loop (mean ± std. dev. of 7 runs, 1,000 loops each)In [10]: %timeit -n 1000 nested_loop(10)
2.52 μs ± 453 ns per loop (mean ± std. dev. of 7 runs, 1,000 loops each)

更多的魔法命令包括:

通用命令

  • %quickref:显示 IPython 的快速参考卡片。
  • %magic 或 %lsmagic:显示所有可用的魔法命令。
  • %history:显示命令历史。
  • %clear 或 %reset:清空命令行界面或重置 Interactive namespace(分别对应清除输出和变量)。
  • %pwd:显示当前工作目录。
  • %cd:改变当前工作目录。
  • %ls 或 ls:列出当前工作目录的内容。

执行系统命令

  • !command:在子shell中执行操作系统命令,如 !ls

代码执行与性能分析

  • %time:计算单个表达式的执行时间。
  • %timeit:多次执行以精确测量小段代码的执行时间并给出统计信息。
  • %prun:使用 Python 的 cProfile 模块进行代码性能分析。
  • %memit:测量代码执行时的内存使用情况。

文档和帮助

  • %run script.py:运行 Python 脚本文件。
  • %load script.py:将脚本文件的内容加载到交互式会话中。
  • %who%whos:列出或详细显示当前命名空间中的变量。
  • %debug:进入交互式调试器。
  • %paste:粘贴多行代码并执行。
  • %help 或 %?:获取有关魔法命令或Python对象的帮助。
  • object? 或 object??:显示对象的文档字符串或源代码。

并行计算

  • %px:在 IPython 并行集群中的所有引擎上执行代码。
  • %autopx:自动将随后的代码块发送到并行引擎。
  • %pxresult:获取最近一次 %px 命令的结果。

对于系统命令,也意味着可以在ipython交互中直接这样:

!pip install pandas

特色

相比于默认的Python命令行交互,IPython提供了一些额外的增强:

  • 语法高亮

IPython提供了语法高亮的功能,这对与代码看起来更易读。

  • 自动补全

自动补全是非常方便的功能,IPython提供了大多数流行库的自动补全,包括如下这样:

以及这样的常用别名:

  • 魔术命令(Magic Commands)
  • 历史记录
  • 对象信息
  • 对象信息

在 IPython 中输入一个变量名后跟上一个问号 ?,例如 my_variable?,会显示该变量的文档字符串。如果使用两个问号 ??,则还会显示源代码(如果可用)。这个功能之强大堪比IDE。

一些冷门小技巧

清除变量

In [1]: a=1In [2]: a
Out[2]: 1In [3]: %reset_selective -f aIn [4]: a
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[4], line 1
----> 1 aNameError: name 'a' is not defined

对于命令行,变量名称的污染有时候很麻烦。使用%reset_selective可以从名称空间中清除变量。

别名

对于熟手,IPython可以像Linux Bash一样,自定义很多东西,比如命令的别名,使用得到可以自己打造一个类似于Bash的命令行系统:

In [7]: %alias ls dir    # 将Windows的dir重命名为lsIn [8]: ls驱动器 D 中的卷没有标签。卷的序列号是 0229-9B9ED:\ 的目录2024/06/12  02:54    <DIR>          .ipynb_checkpoints
2024/06/12  02:54    <DIR>          .virtual_documents

调试

%debug 魔法命令可以在 IPython 中启动一个交互式调试器,这个调试器在遇到异常时自动启动,或者你可以手动启动来调试某段特定的代码。它提供了类似于Python调试器pdb的功能,但集成在IPython环境中,拥有更好的交互性和易用性。

def access_list_element():
2    my_list = [1, 2, 3]
3    print(my_list[3])  # 这里会抛出 IndexError

结语

IPython是一个很方便的命令行Python交互工具,如果你十分熟练,甚至可以把它当做一个简化的IDE使用。即使你不熟悉,相比于IDE和Notebook,他对于你测试一些小方法和快速做一些实验也是非常便捷的工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/861385.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot + Vue前后端项目(第十九记)

项目实战第十九记 写在前面1. redis安装(windows安装)1.1 获取软件链接地址&#xff1a;1.2 启动redis1.3 测试是否启动成功1.4 通过 Another Redis DeskTop软件可视化查看redis 2. SpringBoot集成redis2.1 引入依赖2.2 注入RedisTemplate2.3 使用redis2.4 redis更新2.5 redis使…

【自然语言处理系列】掌握jieba分词器:从基础到实战,深入文本分析与词云图展示

本文旨在全面介绍jieba分词器的功能与应用&#xff0c;从分词器的基本情况入手&#xff0c;逐步解析全模式与精确模式的不同应用场景。文章进一步指导读者如何通过添加自定义词典优化分词效果&#xff0c;以及如何利用jieba分词器进行关键词抽取和词性标注&#xff0c;为后续的…

美创携手浙江长征职业技术学院,共建智云数据安全大师工作室

6月24日&#xff0c;“美创科技浙江长征职业技术学院智云数据安全大师工作室揭牌暨中国特色学徒制第四期云数据安全和智能运维人才选拔培养启动仪式”在长征职业技术学院隆重举行。 浙江长征职业技术学院计算机与信息技术学院院长梅灿华、计算机与信息技术学院学工办副主任华春…

使用 frida hook Android app

Frida&#xff1a; 一种基于动态插装&#xff08;dynamic instrumentation&#xff09;技术的工具包&#xff0c;它主要是为测试人员、开发人员和逆向工程爱好者创建&#xff0c;在目标程序运行时&#xff0c;允许用户将 JavaScript代码注入其中&#xff0c;实现动态修改和调试…

ONLYOFFICE8.1版本桌面编辑器的测评

首先我们先出示一下我们所测评官网的链接&#xff1a; ONLYOFFICE官网链接&#xff1a;ONLYOFFICE - 企业在线办公应用软件 | ONLYOFFICE 我们这款ONLYOFFICE8.1版本有这一下优点 1.解决PDF痛点 ONLYOFFICE在PDF编辑方面支持高亮显示、下划线和删除线、添加批注等功能&#…

【2024最新版】Eclipse安装配置全攻略:图文详解

目录 1. Eclipse介绍1.1 背景1.2 主要特点和功能1.3 版本发布1.4 优势与劣势 2. 下载Eclipse3. 安装Eclipse4. 启动Eclipse 1. Eclipse介绍 Eclipse是一个开源的、基于Java的可扩展开发平台&#xff0c;主要用于Java开发者&#xff0c;但也支持其他语言如C/C、PHP、Python等。…

【PWN · TcachebinAttack | UAF】[2024CISCN · 华中赛区] note

一道简单的tcache劫持 一、题目 二、思路 存在UAF&#xff0c;libc版本2.31&#xff0c;经典菜单题 1.通过unsorted-bin-attack来leak-libc 2.通过uaf打tcache-bin-attack劫持__free_hook实现getshell 三、EXP from pwn import * context(archamd64,log_leveldebug)ioproce…

ansible自动化运维,(2)ansible-playbook

三种常见的数据格式&#xff1a; XML&#xff1a;可扩展标记语言&#xff0c;用于数据交换和配置 JSON&#xff1a;对象标记法&#xff0c;主要用来数据交换或配置&#xff0c;不支持注释 YAML&#xff1a;不是一种标记语言&#xff0c;主要用来配置&#xff0c;大小写敏感&…

科技未来·无限可能“2024世亚智博会”

随着科技的飞速发展&#xff0c;人类社会正以前所未有的速度迈向一个全新的时代。科学技术作为第一生产力&#xff0c;不仅极大地推动了经济和社会的发展&#xff0c;更在不断地改变着我们的生活方式和思维方式。特别是在人工智能、物联网等前沿科技领域&#xff0c;其创新和应…

【ZYNQ】VDMA 的介绍

AXI VDMA 是 Xilinx 官方提供的高带宽视频 DMA IP&#xff0c;用于实现 AXI4-Stream 视频数据流与 AXI4 接口数据的转换&#xff0c;同时提供帧缓存与帧同步控制功能。本文主要介绍 AXI VDMA 的基本结构与原理&#xff0c;并简要介绍 VDMA 的配置与使用方法。 目录 1 VDMA 简介…

egg代码生成器

今天给大家分享一下egg的代码生成器&#xff0c;这个其实原理很简单&#xff0c;说白了就是用到了nodejs的一个文件io的操作&#xff0c;通过一系列配置参数解析然后生成一个很长的字符串&#xff0c;写入到文件中&#xff0c;最后导出到我们指定的文件夹。 前提概要 为什么我…

web前端——VUE

1.什么是框架&#xff1f; ①概述 框架结构就是基本功能&#xff0c;把很多基础功能已经实现了、封装了。在基础语言之上&#xff0c;对各种基础功能进行封装&#xff0c;方便开发者&#xff0c;提高开发效率 ②前端框架 javaScript是原生的 vue.js&#xff1a; 是一个js框架&…

最新解决docker镜像无法下载问题

1.增加或修改daemon.json文件 ​ cd /etc/dockervi daemon.json{ "registry-mirrors": [ "https://docker.m.daocloud.io" ] }2.重启docker服务 sudo systemctl daemon-reload sudo systemctl restart docker 3.验证 下载https://txodoo.cn/blog/11/d…

双指针dd d df f

像二分这样的算法&#xff0c;我们甚至可以不用管&#xff0c;直接在问题空间之内搜索&#xff0c;但是双指针也非常好用&#xff0c;帮助我们来减少枚举对象&#xff0c;我们来总结一下这经典的三个题目&#xff1a; 最长上升不重复子序列活动 - AcWings 首先一定要写…

LabVIEW电路板故障诊断系统

基于LabVIEW软件开发的电路板故障诊断系统&#xff0c;涵盖功能测试、性能测试和通讯测试等多个方面。系统集成了多种硬件设备&#xff0c;包括NI PXI-1033机箱、NI PXI-4071数字万用表、NI PXI-4130电源模块、NI PXI-8512 CAN模块等&#xff0c;通过模块化设计实现了对电路板的…

shell中的函数

统计家目录下.c文件的个数 终端输入一个.sh文件&#xff0c;判断文件是否由可执行权限&#xff0c;如果有可执行权限运行脚本&#xff0c;没有可执行权限添加可执行权限后&#xff0c;再运行脚本 写一个函数&#xff0c;输出当前用户uid和gid&#xff0c;并使用变量接收结果 终…

【LLM Transparency Tool】用于深入分析和理解大型语言模型(LLM)工作原理的工具

背景 LLM Transparency Tool 是一个用于深入分析和理解大型语言模型&#xff08;LLM&#xff09;工作原理的工具&#xff0c;旨在增加这些复杂系统的透明度。它提供了一个交互式界面&#xff0c;用户可以通过它观察、分析模型对特定输入&#xff08;prompts&#xff09;的反应…

加速科技Flash存储测试解决方案 全面保障数据存储可靠性

Flash存储芯片 现代电子设备的核心数据存储守护者 Flash存储芯片是一种关键的非易失性存储器&#xff0c;作为现代电子设备中不可或缺的核心组件&#xff0c;承载着数据的存取重任。这种小巧而强大的芯片&#xff0c;以其低功耗、可靠性、高速的读写能力和巨大的存储容量&…

OpenGL-ES 学习(6)---- 立方体绘制

目录 立方体绘制基本原理立方体的顶点坐标和绘制顺序立方体颜色和着色器实现效果和参考代码 立方体绘制基本原理 一个立方体是由8个顶点组成&#xff0c;共6个面&#xff0c;所以绘制立方体本质上就是绘制这6个面共12个三角形 顶点的坐标体系如下图所示&#xff0c;三维坐标…

【目标检测】Yolov8 完整教程 | 检测 | 计算机视觉

学习资源&#xff1a;https://www.youtube.com/watch?vZ-65nqxUdl4 努力的小巴掌 记录计算机视觉学习道路上的所思所得。 1、准备图片images 收集数据网站&#xff1a;OPEN IMAGES 2、准备标签labels 网站&#xff1a;CVAT 有点是&#xff1a;支持直接导出yolo格式的标…