Python解释器和IPython

简介: Python解释器和IPython

目录



简介


今天给大家介绍一下Python的一个功能非常强大的解释器IPython。虽然Python本身自带解释器,但是相对而言IPython的功能更加的强大。


Python解释器


Python是自带解释器的,我们在命令行输入python即可进入python的解释器环境:


$> python
Python 2.7.15 (default, Oct  2 2018, 11:47:18)
[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.11.45.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> site = "www.flydean.com"
>>> site
'www.flydean.com'
>>>


python解释器的提示符是>>>


python提供了一个非常有用的命令help,我们可以使用help来查看要使用的命令。


>>> help
Type help() for interactive help, or help(object) for help about object.


在Python3中,还提供了tab的补全功能:


>>> site
'www.flydean.com'
>>> site.
site.capitalize(    site.expandtabs(    site.isalpha(       site.isprintable(   site.lower(         site.rindex(        site.splitlines(    site.upper(
site.casefold(      site.find(          site.isdecimal(     site.isspace(       site.lstrip(        site.rjust(         site.startswith(    site.zfill(
site.center(        site.format(        site.isdigit(       site.istitle(       site.maketrans(     site.rpartition(    site.strip(
site.count(         site.format_map(    site.isidentifier(  site.isupper(       site.partition(     site.rsplit(        site.swapcase(
site.encode(        site.index(         site.islower(       site.join(          site.replace(       site.rstrip(        site.title(
site.endswith(      site.isalnum(       site.isnumeric(     site.ljust(         site.rfind(         site.split(         site.translate(


使用起来非常的方便。


和Python自带的解释器之外,还有一个更加强大的解释器叫做IPython。我们一起来看看。


IPython


IPython是一个非常强大的解释器,通常它是和jupyter notebook一起使用的。在IPython3.X中,IPython和Jupyter是作为一个整体一起发布的。但是在IPython4.X之后,Jupyter已经作为一个单独的项目,从IPython中分离出来了。


使用IPython很简单,输入IPython命令即可:


$> ipython
Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 12:04:33)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]: site= "www.flydean.com"
In [2]: site
Out[2]: 'www.flydean.com'


IPython的提示符是In [1]:


基本上Python自带的命令在IPython中都是可以使用的。


IPython提供了4个非常有用的命令:


command description
? Introduction and overview of IPython’s features.
%quickref Quick reference.
help Python’s own help system.
object? Details about ‘object’, use ‘object??’ for extra details.


魔法函数


IPython中有两种魔法函数,一种是Line magics,一种是Cell magics


Line magics 接收本行的输入作为函数的输入,是以%开头的。而Cell magics可以接收多行的数据,直到你输入空白回车为止。是以%%开头的。


比如我们想要看一个timeit的魔法函数的用法,可以使用Object?来表示:


$> In [4]: %timeit?
Docstring:
Time execution of a Python statement or expression
Usage, in line mode:
  %timeit [-n<N> -r<R> [-t|-c] -q -p<P> -o] statement
or in cell mode:
  %%timeit [-n<N> -r<R> [-t|-c] -q -p<P> -o] setup_code
  code
  code...


timeit用来统计程序的执行时间,我们分别看下Line magics和Cell magics的使用:


In [4]: %timeit?
In [5]: %timeit range(1000)
199 ns ± 3.8 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
In [6]: %%timeit range(1000)
   ...: range(1000)
   ...:
208 ns ± 12.1 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)


事实上,如果只是LIne magics的话,我们可以省略前面的%,但是对于Cell magics来说,是不能省略的。


In [7]: timeit range(1000)
200 ns ± 4.03 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)


常见的魔法函数有下面几种:



运行和编辑



使用%run 可以方便的运行外部的python脚本。


In [8]: run?
Docstring:
Run the named file inside IPython as a program.
Usage::
  %run [-n -i -e -G]
       [( -t [-N<N>] | -d [-b<N>] | -p [profile options] )]
       ( -m mod | file ) [args]


run有几个非常有用的参数,比如-t 可以用来统计程序的时间。-d可以进行调试环境,-p可以进行profiler分析。


使用%edit 可以编辑多行代码,在退出之后,IPython将会执行他们。


如果不想立即执行的话,可以加上-x参数。


Debug


可以使用%debug 或者 %pdb 来进入IPython的调试环境:


In [11]: debug
> /Users/flydean/.pyenv/versions/anaconda3-5.1.0/lib/python3.6/site-packages/IPython/core/compilerop.py(99)ast_parse()
     97         Arguments are exactly the same as ast.parse (in the standard library),
     98         and are passed to the built-in compile function."""
---> 99         return compile(source, filename, symbol, self.flags | PyCF_ONLY_AST, 1)
    100
    101     def reset_compiler_flags(self):
ipdb>


In [12]: pdb
Automatic pdb calling has been turned ON
In [13]: pdb
Automatic pdb calling has been turned OFF


或者可以使用 %run -d theprogram.py 来调试一个外部程序。


History


IPython可以存储你的输入数据和程序的输出数据,IPython的一个非常重要的功能就是可以获取到历史的数据。


在交互环境中,一个简单的遍历历史输入命令的方式就是使用up- 和 down- 箭头。


更强大的是,IPython将所有的输入和输出都保存在In 和 Out这两个变量中,比如In[4]。


In [1]: site = "www.flydean.com"
In [2]: site
Out[2]: 'www.flydean.com'
In [3]: In
Out[3]: ['', 'site = "www.flydean.com"', 'site', 'In']


可以使用 _ih[n]来访问特定的input:


In [4]: _ih[2]
Out[4]: 'site'


_i, _ii, _iii 可以分别表示前一个,前前一个和前前前一个输入。


除此之外,全局变量 _i 也可以用来访问输入,也就是说:


_i<n> == _ih[<n>] == In[<n>]
_i14 == _ih[14] == In[14]


同样的,对于输出来说也存在着三种访问方式:


_<n> == _oh[<n>] == Out[<n>]
_12 == Out[12] == _oh[12]


最后的三个输出也可以通过 _, _____来获取。


还可以使用%history来列出之前的历史数据进行选择。


history可以和 %edit, %rerun, %recall, %macro, %save%pastebin 配和使用:


通过传入数字,可以选择历史的输入行号。


%pastebin 3 18-20


上面的例子会选择第3行和第18-20行输入。


运行系统命令


使用!可以直接运行系统命令:


In [27]: !pwd
/Users/flydean/Downloads


还可以用变量接收运行的结果,比如 : files = !ls

相关文章
|
6月前
|
Rust 自然语言处理 前端开发
Python潮流周刊#8:Python 3.13 计划将解释器提速 50%!
Python潮流周刊#8:Python 3.13 计划将解释器提速 50%!
78 2
|
6月前
|
存储 设计模式 Java
深入 Python 解释器源码,我终于搞明白了字符串驻留的原理!
深入 Python 解释器源码,我终于搞明白了字符串驻留的原理!
89 2
|
6月前
|
JavaScript 前端开发 Java
11 个最佳的 Python 编译器和解释器
11 个最佳的 Python 编译器和解释器
400 1
|
6月前
|
前端开发 JavaScript Shell
如何免安装使用 Python?推荐 17 个在线的 Python 解释器!
如何免安装使用 Python?推荐 17 个在线的 Python 解释器!
105 0
|
5月前
|
开发框架 并行计算 安全
Python的GIL限制了CPython在多核下的并行计算,但通过替代解释器(如Jython, IronPython, PyPy)和多进程、异步IO可规避
【6月更文挑战第26天】Python的GIL限制了CPython在多核下的并行计算,但通过替代解释器(如Jython, IronPython, PyPy)和多进程、异步IO可规避。Numba、Cython等工具编译优化代码,未来社区可能探索更高级的并发解决方案。尽管GIL仍存在,现有策略已能有效提升并发性能。
68 3
|
5月前
|
安全 Java Python
GIL是Python解释器的锁,确保单个进程中字节码执行的串行化,以保护内存管理,但限制了多线程并行性。
【6月更文挑战第20天】GIL是Python解释器的锁,确保单个进程中字节码执行的串行化,以保护内存管理,但限制了多线程并行性。线程池通过预创建线程池来管理资源,减少线程创建销毁开销,提高效率。示例展示了如何使用Python实现一个简单的线程池,用于执行多个耗时任务。
45 6
|
4月前
|
Python
`cmd`模块是Python标准库中的一个模块,它提供了一个简单的框架来创建命令行解释器。
`cmd`模块是Python标准库中的一个模块,它提供了一个简单的框架来创建命令行解释器。
|
4月前
|
IDE 开发工具 Python
【Python】已解决:pip安装第三方模块(库)与PyCharm中不同步的问题(PyCharm添加本地python解释器)
【Python】已解决:pip安装第三方模块(库)与PyCharm中不同步的问题(PyCharm添加本地python解释器)
695 0
|
5月前
|
C语言 Python
Python解释器(1)
【6月更文挑战第1天】Python解释器(1)。
60 8
|
5月前
|
机器学习/深度学习 人工智能 BI
解析Python解释器:从基础到应用的完整指南
解析Python解释器:从基础到应用的完整指南
121 2