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)

大家都在看

  • Redis的字符串源码

    Redis的字符串源码 什么是二进制安全?通俗地讲,C语言中,用”\0″表示字符串的结束,如果字符串中本身就有”\0″字符,字符串就…

    Linux 2023年5月28日
    092
  • 匿名远程启动jenkins的job

    安装jenkins插件Build Authorization Token Root job配置中的构建触发器,勾选触发远程构建,输入要用的令牌,如soul 通过jenkins地址调…

    Linux 2023年6月6日
    0134
  • CH9102与CP2102应用注意事项

    CH9102(WCH)与CP2102的不同子型号之间可实现pintopin兼容,可以在不更改硬件设计的前提下实现不同型号间快速切换与产品应用。CH9102的子型号包括:CH9102…

    Linux 2023年6月7日
    095
  • 列表初始化

    C++11将列表初始化(大括号初始化)作为一种通用的初始化方式.可用于所有类型. 数组以前就可以用列表初始化,但 C++11 中的列表初始化新增了一些功能: 初始化数组时,可省略等…

    Linux 2023年6月13日
    081
  • Kasini3000 batch modify the password for windows node

    https://gitee.com/chuanjiao10/kasini3000 win,linux devops automation batch script framewor…

    Linux 2023年6月13日
    0104
  • 前几天看到微信多开方式

    @echo offset wechatpath=WeChat.exeecho. echo. echo —————&#82…

    Linux 2023年6月14日
    0100
  • Mysql在linux对大小写敏感的设置

    编辑/etc/my.cnf文件,在[mysqld]节下 添加 lower_case_table_names 参数,并设置相应的值 (备注:为0时大小写敏感,为1时大小写不敏感,默认…

    Linux 2023年6月13日
    095
  • Docker镜像管理基础

    Docker镜像管理基础 1、镜像的概念 镜像可以理解为应用程序的集装箱,而docker用来装卸集装箱。 docker镜像含有启动容器所需要的文件系统及其内容,因此,其用于创建并启…

    Linux 2023年6月7日
    0116
  • 网络扫描(二)

    免责声明:本文所述工具只用于网络安全的学习与研究。严禁任何阅读本文的读者利用本文所述工具进行违法犯罪活动。如有任何法律纠纷本文作者概不负责。 上一篇博文讲到了fping工具和nma…

    Linux 2023年6月14日
    094
  • Centos8安装docker报错(错误提示:All mirrors were tried)

    Centos8从零安装Docker-ce 背景:我把服务器整个yum源的配置文件里的内容全删了。因为我一直碰到”All mirrors were tried&#8221…

    Linux 2023年5月27日
    0155
  • LVS+KeepAlived高可用部署架构

    1 构建高可用集群 1.1 什么是高可用集群 高可用集群(High Availability Cluster,简称HA Cluster),是指以减少服务中断时间为目的得服务器集群技…

    Linux 2023年6月13日
    085
  • mysql存储中文乱码

    表现 前端页面,封装到html里的中文可以显示,和后台相关的中文显示都是 ??? 。查看network请求,传参正常。 查看mysql编码,是utf8。再看连接数据库的JDBC设置…

    Linux 2023年6月8日
    090
  • python学习

    目录: 1、课程推荐以及书籍推荐 2、学习记录 2.1:无 1. 实践过程 廖雪峰的官方网站 2. 学习记录 2.1 无: posted @2022-02-12 19:44 风御之…

    Linux 2023年6月13日
    0106
  • 快速删除指定文件夹下的.DS_Store文件

    清除当前文件夹中 .DS_store 文件: find "." -name .DS_Store find "." -name .DS_Sto…

    Linux 2023年6月14日
    077
  • Linux关于防火墙的命令

    Linux关于防火墙的命令 一、red hat/CentOs7关闭防火墙的命令 查看防火墙状态 systemctl status firewalld service iptable…

    Linux 2023年6月11日
    098
  • Linux下如何切割与合并大文件

    我们传输一个大文件时,有时网络比较慢,需要花费很长时间才能传输完成,或者传输的过程中,网络不稳定,有可能导致此次传输失败,针对这种情况,我们可以把大文件切分成小文件,再逐个的传输到…

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