交互式Python开发环境是什么

发布时间:2022-01-24 16:26:01 作者:zzz
来源:亿速云 阅读:222

本文小编为大家详细介绍“交互式Python开发环境是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“交互式Python开发环境是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

Spyder (前身是 Pydee) 是一个强大的交互式 Python 语言开发环境,提供高级的代码编辑、交互测试、调试等特性,支持包括 Windows、Linux 和 OS X

交互式Python开发环境是什么

使用Spyder的第一步

这部分内容针对Python和Spyder的初学者,如果你觉得太简单,请继续学习下一部分内容。

执行一段代码

使用IPython Console

我们推荐您使用IPython Console,因为它比标准的Python Console的功能更多,并且建议您将它设置为默认控制台。

在执行代码的过程中到底发生了什么?

通过使用IPython Console,现在你应该知道Spyder中Editor窗口中的Python代码是如何执行的了。

如果你刚开始学习Python,现在最好返回到课本或者课程中练习更多的程序实例。

下一部分内容将详细介绍如何在IPython Console中执行Editor窗口中的代码段,然后更新Editor中的部分定义。这是一种更先进的技术,并且非常有用。(你可能对执行被分隔符隔开的代码块(也称为“cells”)也感兴趣,可以查看——功能快捷键)。

调用console中的函数

你一旦执行了hello.py文件,函数对象hello就被定义了,并且IPython console也知道了它的存在。因此,我们可以用如下方式在console中调用函数:

查看定义在console中的对象

更新对象

简单策略:重新执行整个程序

当你按下F5键时发生了什么?其实,Python遍历的整个hello.py文件,创建了一个新的函数对象hello(覆盖了之前的函数对象hello),然后执行了整个函数。

我们看一下细节

我们需要从一个定义清晰的情形开始。为了做到这一点,请你将函数hello()改回输出Hello World的情况,然后按F5键执行整个程序,检查输出应该是Hello World。

有两种方法可以更新hello函数的版本:

在console中通过执行部分代码(上述例子中我们升级了函数对象hello)来升级一些对象的能,对于将来开发和调试更复杂的代码非常有用,也会节省在console中创建对象或数据的时间。例如,只修改我们真正想要调试的函数(或者类/对象),我们可以继续使用当前console中定义的数据和其他对象。


Python初学者的第一步

对于Python编程教学和学习,我们推荐使用IPython console而不是Python console,这在科学Python社区被认为是事实上的标准。

转换到IPython console

如果你已经有一个激活的IPython console,那么你可忽略这部分内容,只要用鼠标点击“IPython console”就使它可见了。

在console窗口中(默认位于右下角),在默认情况下用3个大于号最为提示,如>>>。这表示我们使用的是普通的Python console(Spyder新增了一些功能)。

然而我们更喜欢使用交互式的Python console(Interactive Python console),即IPython console。因此,选择Console > Open an IPython Console。

你可以看到在console窗口中产生了一个新的命令窗,IPython 的提示区是In [ 1 ]:

重置命名空间

命名空间(在任何给定时间内在console中定义的对象集合)在IPython中可以使用%reset命令清除。输入%reset然后按下enter键,用y确认:

In [1]: %reset

Once deleted, variables cannot be recovered. Proceed (y/[n])? y

In [2]:12345

这就可以了。

我们对它进行更深一层的讨论,倘若你不感兴趣,也可以跳过这部分内容:使用%reset命令之后,在当前会话中只有少部分对象在命名空间中。我们可以使用dir()把他们都列出来:

In [2]: dir()
Out[2]:
['In','Out','__builtin__','__builtins__','__name__','_dh','_i','_i2','_ih','_ii','_iii','_oh','_sh','exit','get_ipython','help','quit']12345678910111213141516171819

最后,如果你想在使用reset命令时跳过确认步骤,你可以使用%reset -f命令。

遵守PEP8规则

除了由Pyhton编程语言执行的语法之外,关于源代码的布局还有其他约定,特别是Style Guide for Python source code即大家所熟知的“PEP8”。遵循这一规则,尽可能写出相同风格的代码,这样,对于代码的作者和用户就更容易读和调试。

你需要修改Spyder的设置,如果触犯了PEP8的编码规则,就会自动警告。


参数设置

参数在哪配置

很多Spyder的行为都可以通过配置参数实现。而它们在菜单的位置取决于你是用的操作系统:

设置PEP8规则检测警告

Preferences > Editor > Code Introspection/Analysis,然后勾选Style analysis(PEP8)。

激活sympy模式

通过Preferences > IPython console > Advanced Settings > Use symbolic math激活IPython的sympy模式,这个模式由sympy模块提供。Spyder中的这一模式提供了非常好的渲染过的数学上的输出(LaTeX风格),并汇报它完成了什么。在IPython console启动时自动导入一些sympy对象。

These commands were executed:
>>> from __future__ import division
>>> from sympy import *
>>> x, y, z, t = symbols('x y z t')
>>> k, m, n = symbols('k m n', integer=True)
>>> f, g, h = symbols('f g h', cls=Function)123456

我们可以使用变量x,y: 交互式Python开发环境是什么


方便的快捷方式


执行设置

这些设置定义当我们选择Run > Run或者按了F5键Editor中的代码如何执行的。

默认情况下,当我们第一次执行一个文件时设置会出现。如果我们想改变设置,可以选择Run > Configure或者按F6找到它们。

对于console有3种方法可用,我们将讨论其中两种。我们假设在Editor中有如下形式的hello.py程序:

def hello(name):
   """Given an object 'name', print 'Hello ' and the object."""   print("Hello {}".format(name))


i = 42if __name__ == "__main__":
hello(i)12345678

在当前Python或者IPython console中执行

这是一个建议,通常也是一个很好的选择。

存在的对象I(执行代码之后)

选择Run > Configure下的Execute in current Python or IPython console这一设置,意味着:

1.当完全执行hello.py,我们可以和执行代码的console交互,并且我们可以很方便的使用IPython console做到这一点。

2.我们可以检查对象,也可以和执行代码创建的对象交互,例如i和hello()。

这种方法对于递增式的编程、测试和调试都非常有用:我们可以在console的命令提示区直接调用hello()函数,而不用执行整个hello.py文件。

存在的对象II(从代码执行前开始)

然而,在当前console中执行Editor中的代码也意味着: 3.其他定义与console会话中的其他(全局)对象对于执行的代码也是可见的。

这些对象的存在很容被遗忘,对于小量级的代码也不是必须的。这些对象可能源自于之前执行的代码,也可能来自console中的交互式工作,又或是源于一些导入(例如from pylab import *,Spyder也可能会自动导入)。

如果无意间依赖于这些对象,控制台命名空间中对象的可见性可能会导致代码出错。

实例如下:我们可以想象:

这时,我们保存hello.py文件,本想着可以正确执行。但是,在新的(I)Python console会话中执行代码却导致错误,因为i并没有被定义。

这一问题的出现是因为代码使用了一个代码本身没有创建的对象(这里是i)。这一问题同样会影响模块导入:如果我们在IPython console命令提示区导入了pylab,它对于我们在IPython console会话中执行的代码就是可见的。

为了学习如何确认我们的代码并没有依赖于已经存在的对象,请看“如何双重检查你的代码是独立正确运行的”这部分内容。

在一个独立的Python console中运行

在Run > Configure下选择Execute in new dedicated Python console,在每次运行hello.py程序时都会重新开启一个新的Python console。它的主要优点在于,在这一模式下我们可以确定在执行代码时的console中不会有源自于之前调试和执行代码产生的对象。这样,每次执行editor中的代码,python console都是新的。

这一选择很安全,但是灵活性下降,并且不能使用IPython console。

如何双重检查你的代码是独立正确运行的

假设你已经选择 Execute in current Python or IPython console这一选项,你有两种方法可以确认你的代码时独立运行的(例如,代码不依赖于未定义的变量,未导入的模块和命令)。

1.从 Execute in current Python or IPython console换到 Execute in new dedicated Python console这一选项,然后再独立的Python console中运行Editor中的代码。

另一种方法你也可以选择。如果你想继续使用当前的IPython console,你可以

2.使用IPython console的%reset命令,这将会移除所有当前命名空间中的对象(如上述例子中的变量i),然后再执行Editor中的代码。

建议

我给初学者的建议是使用 Execute in current Python or IPython console,然后选择IPython console。

一旦你完成了一段代码,你都可以使用上述的两种方法确认你的代码是否独立运行。


其他需要注意的内容

多文件

如果在Editor中打开了多个文件,窗口顶部文件名对应的标签从左往右是以字母表顺序排列的。

在左侧的标签,有一个图标,当鼠标移到它上面会显示Browse tabs。在很多文件打开时,它可以使你能直接跳转到某一文件。

环境变量

环境变量可以在Python Console窗口中显示。单击Options图标(提示信息就是Options),然后选择Environment variables。

重置个性化设置

所有个性化设置都可以被重置,调用以–reset结尾的命令行。例如:spyder –reset。

Variable Explorer中的对象

在variable explorer中选择变量,鼠标右键,将会给出进一步分析它们的选项。

鼠标双击一个字典对象,将会在一个新的窗口中显示这个字典。

你同样可以显示和编辑数组、列表、数字和字符串。

说明文档的格式

如果你想为你正开发的代码添加说明(我们也推荐您为它编写说明),那就使用被称为reStructuredText的特殊格式。这种格式需要遵守叫做 Numpydoc standard的标准。

你遵照那些指导,就可以在Spyder中编写非常漂亮的说明。

例如,为了在Spyder的Help窗口中得到如下展示的average()函数: 交互式Python开发环境是什么 你应该以如下形式编辑说明文字:

def average(a, b):
   """
   Given two numbers a and b, return their average value.

   Parameters
   ----------
   a : number
     A number
   b : number
     Another number

   Returns
   -------
   res : number
     The average of a and b, computed using 0.5*(a + b)

   Example
   -------
   >>> average(5, 10)
   7.5

   """return (a + b) * 0.5123456789101112131415161718192021222324

需要注意的是,这里使用了Parameters关键字,并且有下划线。a : number这一行告诉我们参数a是一个数。下一行是补充说明,我们可以给出更加详细的解释,这个变量代表什么,它的数据类型应该满足什么条件等等。

对于其他参数和返回值都可按这个形式编写。

通常情况下,像展示的那样给出例子是在好不过的。


调试

逐行执行代码

如果Python console处于激活状态,通过Debug > Debug菜单选项或者Ctrl + F5开始Python调试器,如果IPython console处于激活状态则开启了IPython调试器。之后,Editor窗口将会高亮将要执行的代码行,Variable Explorer窗口将显示当前执行代码中的变量。(它只显示变量的数值和数组类型,不会显示函数或者类对象)。

进入调试模式之后,使用调试工具栏中的Step按钮交互式Python开发环境是什么,你可以逐行执行代码:,或者使用快捷方式Ctrl + F10。

你可以查看某一个具体的函数是如何执行的,通过Step into按钮交互式Python开发环境是什么,或者使用快捷方式Ctrl + F11。

从某一函数中跳出并执行下一行程序则使用Step return按钮交互式Python开发环境是什么,或者使用快捷方式Ctrl + F12 。

如果你希望在某一具体位置检查你的程序,则需要在你想要暂停的某一行插入breakpoint,通过按下F12即可实现,你会发现在这一行的旁边会有一个红色的点。这时当你按下Continue按钮交互式Python开发环境是什么,程序执行到这一行就会暂停。

注意: 你同样可以在console命令窗中使用如下命令控制调试进程: n 移动到下一行; s 进入当前语句,如果是一个函数则进入这个函数; r 执行完当前函数的所有语句并从该函数返回; p 打印变量的值,例如p x将打印变量x的值。

在调试器的命令行中,你也可以干煸变量的值。例如,为了在IPython调试器命令汉中改变变量x的值,则使用ipdb > x = 42,调试器就会用绑定了42的x。你可以调用这个函数做其他的事。尝试如下例子:

def demo(x):
   for i in range(5):
       print("i={}, x={}".format(i, x))
       x = x + 1

demo(0)123456

如果我们执行它(Run > Run),我们可以看到如下输出:

i=0, x=0
i=1, x=1
i=2, x=2
i=3, x=3
i=4, x=412345

现在使用调试器(Debug > Debug)执行代码,先一直使用Step按钮,当高亮的行到达demo(0)时使用Step into按钮查看这个函数。继续使用Step按钮执行剩下的代码行。之后,在调试器命令窗用命令x=10改变x的值。你可以看到在Variable Explore窗中x的值也改变了。你同样可以看到打印出来的作为函数demo()的一部分的x值的变化。

逐行执行代码、查看变量的变化、手动修改变量的值,这一调试技能对于理解代码是如何执行的非常有用。

为了离开调试模式,你可以在命令窗使用exit命令或者在菜单中选择Debug > Debugging Control > Exit。

当IPython中出现了一个异常如何开启调试模式

在IPython console中,当一个异常产生之后,我们可以调用%debug:这就可以开启IPython的调试模式,它可以监视异常发生处的变量。这一操作比在代码中添加print函数再执行代码的调试效率要高得多。

如果你使用了这一操作,你可能还会用到up命令(在调试窗中输入d)和down命令(在调试窗中输入d),这两个命令改变监视堆栈上和下的方向(堆栈中往上表示当前函数已经调用的函数;往下与之相反)。


绘图

用IPython console绘图

假设我们使用的IPython console的版本大于等于1.0.0,我们就可以决定matplotlib/pylab产生的图表用哪种方式显示:

1.在命令行中显示,例如显示在IPython console中;

2.显示在一个新窗口中。

选项1可以很方便的保存交互会话的内容(在有用的快捷方式一节中介绍了如何使用快捷方式将IPython console的内容保存为html文件)。

选项2则允许一些交互式的操作,比如放大图表,操作图表,通过窗口包含的菜单将图表保存成各种格式。

在IPython console中显示图表的命令是:

In [3]: %matplotlib inline1

Spyder的参数配置可以个性化设置默认行为(通过Preferences > IPython Console > Graphics > Activate Support转换到命令行中绘图)。

如下两行命令可以快速生成一个图表,你可以试一下:

In [5]: import pylab
In [6]: pylab.plot(range(10), 'o')12

用Python console绘图

如果我们使用Python console,所有的图表都会显示在新窗口中(没有办法将它显示在Python console的命令行中)。

如下是一个简单的例子,你可以测试一下:

>>> import pylab
>>> pylab.plot(range(10), 'o')12

如果你在专用的控制台中执行代码,你需要在代码中使用matplotlib或者pylab的show()命令使图表显示出来,如:pylab.show()。

注意,show()命令将绑定到已经出现的新窗口上,也就是说你需要关掉那个窗口之后Spyder才会接受其他的命令或响应交互。如果你没看到新的窗口,检查一下它是否显示在Spyder窗口的后面,或者它被隐藏了。

读到这里,这篇“交互式Python开发环境是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. expect交互式脚本
  2. python用交互式模式的方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python

上一篇:Python操作Excel的方法是什么

下一篇:Linux系统中怎么安装SQL server

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》