python小技巧

关于 ipython

1 Tab补全

从外观上,IPython shell和标准的Python解释器只是看起来不同。
IPython shell的 进步之一是具备其它IDE和交互计算分析环境都有的tab补全功能。
在shell中输入表达式,按下Tab,会搜索已输入变量(对象、函数等等)的命名空间

2-1 ?

在变量前后使用问号?,可以显示对象的信息:

In [8]: b = [1, 2, 3]
In [9]: b?

Type: list String Form:[1, 2, 3]
Length: 3 Docstring: list() -> new empty
list list(iterable) -> new list
initialized from iterable's items
In [10]: print?

Docstring:
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=Fals e)

Prints the values to a stream, or to sys.stdout by default.

Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys. stdout.

sep: string inserted between values, default a space.

end: string appended after the last value, default a newline.

flush: whether to forcibly flush the stream.

Type: builtin_function_or_method

2-2 ?

?还有一个用途,就是像Unix或Windows命令行一样搜索IPython的命名空间。
字符与通配符结合可以匹配所有的名字。
例如,我们可以获得所有包含load的顶级 NumPy命名空间:

In [13]: np.*load*?

np.__loader__
np.load
np.loads
np.loadtxt
np.pkgload

3 ??

使用??会显示函数的源码:

In [12]: add_numbers??

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: <ipython-input-9-6a548a216e27>
Type: function
</ipython-input-9-6a548a216e27>

4 %run

你可以用 %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)

可以如下运行:

In [14]: %run ipython_script_test.py

这段脚本运行在空的命名空间(没有import和其它定义的变量),因此结果和普通的运行方式 python script.py 相同。
文件中所有定义的变量(import、函数和全 局变量,除非抛出异常),都可以在IPython shell中随后访问:

In [15]: c
Out [15]: 7.5
In [16]: result
Out[16]: 1.4666666666666666

如果一个Python脚本需要命令行参数(在 sys.argv 中查找),可以在文件路径之后传递,就像在命令行上运行一样。
笔记:如果想让一个脚本访问IPython已经定义过的变量,可以使 用 %run -i 。

5 Ctrl-C

代码运行时按Ctrl-C,无论是%run或长时间运行命令,都会导致 KeyboardInterrupt 。
这会导致几乎所有Python程序立即停止,除非一些特殊情况。

警告:当Python代码调用了一些编译的扩展模块,按Ctrl-C不一定将执行的程序立即停止。
在这种情况下,你必须等待,直到控制返回Python解释器,或者在更糟糕的情况下强制终止Python进程。

6 从剪贴板执行

在IPython shell中也可以从剪贴板执行。
假设在其它应用中复制了代码。
%paste 可以直接运行剪贴板中的代码。
%cpaste 功能类似,但会给出一条提示。

In [18]: %cpaste
Pasting code; enter '--' alone on the line to stop or use Ctrl-D .
:

然后可以先粘贴,在最后一行键入’–‘运行。
使用 %cpaste ,你可以先粘贴任意多的代码再运行。
你可能想在运行前,先看看代码。
如果粘贴了错误的代码,可以用Ctrl-C中断。

7 键盘快捷键

python小技巧

8 魔术命令

IPython中特殊的命令(Python中没有)被称作”魔术”命令。
这些命令可以使普通任 务更便捷,更容易控制IPython系统。
魔术命令是在指令前添加百分号%前缀。
例如,可以用 %timeit (这个命令后面会详谈)测量任何Python语句,例如矩阵乘法,的执行时间:

In [20]: a = np.random.randn(100, 100)
In [20]: %timeit np.dot(a, a)
10000 loops, best of 3: 20.9 &#xB5;s per loop

魔术命令可以被看做IPython中运行的命令行。
许多魔术命令有”命令行”选项,可以通过?查看

魔术函数默认可以不用百分号,只要没有变量和函数名相同。
这个特点被称为”自动魔术”,可以用 %automagic 打开或关闭。

一些魔术函数与Python函数很像,它的结果可以赋值给一个变量.

IPython的文档可以在shell中打开,我建议你用 %quickref 或 %magic 学习下所有特殊命令。

python小技巧

9 集成Matplotlib

IPython在分析计算领域能够流行的原因之一是它非常好的集成了数据可视化和其它用户界面库,比如matplotlib。
%matplotlib 魔术函数配置了IPython shell和Jupyter notebook中的 matplotlib。
这点很重要,其它创建的图不会出现(notebook)或获取session的控 制,直到结束(shell)。
在IPython shell中,运行 %matplotlib 可以进行设置,可以创建多个绘图窗口, 而不会干扰控制台session:

In [26]: %matplotlib
Using matplotlib backend: Qt4Agg

在JUpyter中,命令有所不同:

python小技巧

Original: https://www.cnblogs.com/hs3434/p/16743895.html
Author: hs3434
Title: python小技巧

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/585969/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • java 连接 redis

    Jedis 导入对应的依赖 redis.clients jedis 4.2.3 com.alibaba fastjson 1.2.79 连接数据库 记得在本地打开 redis //…

    Linux 2023年6月7日
    086
  • 设置Docker的默认文件存储位置

    对于windows下,直接修改docker desktop界面的配置项目。对于rocky linux下面,对应的配置文件存储在: vim /etc/docker/daemon.js…

    Linux 2023年6月6日
    064
  • Shell 实现多线程(多任务)

    1.命令结尾添加:& 在命令的末尾加 & 符号,则命令将在后台执行,这样后面的命令不需要等待该命令执行完再开始执行。 2.解决主线程提前退出问题,添加 wait 3…

    Linux 2023年5月28日
    081
  • java分布式(第四章)——Redis

    老套路 1、什么是Redis 2、为什么要用Redis 3、怎么用Redis 4、使用Redis过程中遇到的问题 1、什么是Redis 介绍Redis之前先了解一下Nosql(非关…

    Linux 2023年6月7日
    077
  • 一文搞懂 Redis 架构演化之路

    这种方案就是我们经常听到的 Redis RDB,RDB 采用「 定时快照」的方式进行数据持久化,它的优点是: 持久化文件体积小(二进制 + 压缩) 写盘频率低(定时写入) 缺点也很…

    Linux 2023年5月28日
    077
  • 创建镜像(alpine版)+alpine

    podman用脚本和dockerfile做apache编译安装镜像 1.0安装介质 2.0 特点 2.0 基础命令 3.0 模式 podman用脚本和dockerfile做apac…

    Linux 2023年6月7日
    076
  • redis分享PPT材料

    上次在公司类做了一个redis分享,特别想把ppt上传上来,好像博客园不支持,那就截图把 1.简介 redis是什么: redis是一个nosql(not only sql不仅仅只…

    Linux 2023年5月28日
    070
  • 15、16、17思维导图

    posted @2022-04-24 10:20 20191223张俊怡 阅读(31 ) 评论() 编辑 Original: https://www.cnblogs.com/zzj…

    Linux 2023年6月8日
    0128
  • 关于如何在window下执行SQLSERVER的定时备份

    引言 在使用SqlServer Express 版本的时候发现,这个版本不支持通过数据库的代理方式进行数据库的维护。 解决方案 使用SQL语句加windows任务计划的方式解决具体…

    Linux 2023年6月14日
    087
  • Java常见知识点总结

    1 重载 && 重写 重载: 发生在同一个类中, 方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可以不同,发生在编译时。 重写: 发生在父…

    Linux 2023年6月7日
    093
  • SignalR 如何借助redis 实现跨进程通信

    关于redis的订阅和发布功能,这里讲到比较好https://redisbook.readthedocs.io/en/latest/feature/pubsub.html sign…

    Linux 2023年5月28日
    074
  • TCP 和 UDP 协议简介

    一、TCP TCP(Transmission Control Protocol),传输控制协议,对”传输、发送、通信”进行”控制”的…

    Linux 2023年6月16日
    0160
  • WEB自动化-04-Cypress 测试用例编写和组织

    4 测试用例编写和组织 4.1 用例结构 Cypress是建立在 Mocha和 Chai之上,因此同时支持Chai的 BDD和 TDD两种风格。如果你熟悉JavaScript风格的…

    Linux 2023年6月7日
    0103
  • nginx安装配置步骤

    ​ yum install gcc gcc-c++ pcre pcre-devel openssl openssl-devel zlib zlib-devel -y [root@n…

    Linux 2023年6月11日
    083
  • LeetCode-125. 验证回文串

    题目来源 题目详情 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明: 本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: &#8…

    Linux 2023年6月7日
    079
  • 学习一下 SpringCloud (二)– 服务注册中心 Eureka、Zookeeper、Consul、Nacos

    (1) 相关博文地址: 学习一下 SpringCloud (一)– 从单体架构到微服务架构、代码拆分(maven 聚合): https://www.cnblogs.com/l-y…

    Linux 2023年6月11日
    0104
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球