永发信息网

如何将ipython添加入spyder的python console中

答案:2  悬赏:20  手机版
解决时间 2021-12-03 17:40
如何将ipython添加入spyder的python console中
最佳答案
刚开始接触Python的时候,网上找到的资料基本上上来就是介绍Python语言,很少有对开发环境进行讲解的,但如果在学习的过程中不断练习,这样效率会更高,所以特意将一个Python的开发环境Spyder自带的入门教程翻译出来,希望可以帮助到和我有同样困惑的你。
个人水平有限,会有翻译不到位的地方,欢迎批评指正。
Spyder是使用Python编程语言进行科学计算的集成开发环境。它有一个Editor(编辑器)用于编写代码,Console(控制台)可以评估代码并且在任何时候都可以看到运行结果,Variable Explorer(变量管理器)可以查看代码中定义的变量。
你一旦执行了hello.py文件,函数对象hello就被定义了,并且IPython console也知道了它的存在。因此,我们可以用如下方式在console中调用函数:
在console中写入hello()(靠近In[?],?可以是任意正整数),然后按下Enter键。
你应该发现hello()函数又被执行了一遍,Hello World又被打印了一次。在console中调 用函数和输出的形式应该如下:
In [ ]: hello()
Hello World
你能发现它和执行整个代码之间的区别吗?
当你执行整个代码时,Python会遍历整个文件,创建一个hello函数对象(覆盖之间的 对象),当到达hello()这一行就调用这个函数。
如果我们在console中调用hello(),我们只是调用了之前执行整个hello.py文件在IPython console中定义的函数对象hello。
这些概念在多次练习或者处理更大一些的代码实例后会更加清楚。在稍后的阶段中你可能还会返回此教程。
全部回答
刚开始接触Python的时候,网上找到的资料基本上上来就是介绍Python语言,很少有对开发环境进行讲解的,但如果在学习的过程中不断练习,这样效率会更高,所以特意将一个Python的开发环境Spyder自带的入门教程翻译出来,希望可以帮助到和我有同样困惑的你。
个人水平有限,会有翻译不到位的地方,欢迎批评指正!
Spyder是使用Python编程语言进行科学计算的集成开发环境。它有一个Editor(编辑器)用于编写代码,Console(控制台)可以评估代码并且在任何时候都可以看到运行结果,Variable Explorer(变量管理器)可以查看代码中定义的变量,还有其他的一些设备可以帮你高效地开发代码。
本教程由英国南安普顿大学的Hans Fangohr所写。
使用Spyder的第一步
这部分内容针对Python和Spyder的初学者,如果你觉得太简单,请继续学习下一部分内容。
执行一段代码
我们将使用这段代码作为第一个例子:

# Demo file for Spyder Tutorial

# Hans Fangohr, University of Southampton, UK

def hello():
"""Print "Hello World" and return None"""
print("Hello World")

# main program starts here

hello()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
为了使用这段代码,请在Spyder的Editor(编辑窗)新建一个文件。将代码拷贝到文件中,并以hello.py文件名保存该文件。
为了执行这段代码,从菜单中选择Run > Run(或者按F5键),如果有需要请确认Run settings的设置。如果这是第一次运行代码,你可能会看到如下形式的输出:
In [1]: runfile('/Users/fangohr/Desktop/hello.py', wdir=r'/Users/fangohr/Desktop')
Hello World

In [2]:

这说明你已经成功运行了第一个Python程序。
注意:
runfile旁边显示的具体路径取决于你刚刚保存文件的位置。
1
2
3
4
使用IPython Console
我们推荐您使用IPython Console,因为它比标准的Python Console的功能更多,并且建议您将它设置为默认控制台。
在执行代码的过程中到底发生了什么?
Python逐行读取Editor中的代码,并且它会自动忽略注释(即以#符号开头的行)。
当遇到def关键字,Python知道在这里定义了一个函数。在def hello():之后的所有缩进行都是函数体。
注意:这个函数对象仅仅只是在文件的这个位置被定义了,并没有被调用(或者执行)。
当Python遇到从最左边的列开始写的命令(除了def…和其他一些关键字),它将马上执行这些命令。在hello.py文件中只在hello()的这一行才正真调用名为hello的函数。
如果你在代码中注释掉或者删除hello()这一行,再次执行整个文件(按F5键或者选择 Run > Run),将不会打印任何内容,因为函数hello只被定义了,但没有被调用。
通过使用IPython Console,现在你应该知道Spyder中Editor窗口中的Python代码是如何执行的了。
如果你刚开始学习Python,现在最好返回到课本或者课程中练习更多的程序实例。
下一部分内容将详细介绍如何在IPython Console中执行Editor窗口中的代码段,然后更新Editor中的部分定义。这是一种更先进的技术,并且非常有用。(你可能对执行被分隔符隔开的代码块(也称为“cells”)也感兴趣,可以查看——功能快捷键)。
调用console中的函数
你一旦执行了hello.py文件,函数对象hello就被定义了,并且IPython console也知道了它的存在。因此,我们可以用如下方式在console中调用函数:
在console中写入hello()(靠近In[?],?可以是任意正整数),然后按下Enter键。
你应该发现hello()函数又被执行了一遍,Hello World又被打印了一次。在console中调 用函数和输出的形式应该如下:
In [ ]: hello()
Hello World

1
2
你能发现它和执行整个代码之间的区别吗?
当你执行整个代码时,Python会遍历整个文件,创建一个hello函数对象(覆盖之间的 对象),当到达hello()这一行就调用这个函数。
如果我们在console中调用hello(),我们只是调用了之前执行整个hello.py文件在IPython console中定义的函数对象hello。
这些概念在多次练习或者处理更大一些的代码实例后会更加清楚。在稍后的阶段中你可能还会返回此教程。
查看定义在console中的对象
Python提供了一个函数,它可以显示console中当前命名空间中所有已知的对象。它就是dir():当你在console中写入dir(),你将得到一个对象列表。现在忽略所有以下划线开始的。你能看见hello在列表中吗?
注意:
如果你得到了一个定义对象的长列表,那么Spyder可能已经为你做了一些方便的导入。 为了强调这一点,你需要:
按上文介绍的步骤运行dir()。
重启命名空间
按F5键再次执行hello.py
一旦一个对象在当前命名空间中可见(例如本例中的hello),我们可以使用help函数了解这个对象:在console提示区写入help(hello),你应该可以看到如下的输出:
In [ ]: help(hello)
Help on function hello in module __main__:

hello()
Print "Hello World" and return None

Python从哪获取的信息呢?其中一些信息(例如输入的参数个数和变量名称,这里我们没有输入参数)Python可以通过检查对象获得,另外一些信息源自于提供给函数对象hello的文档字符串。文档字符串就是紧挨着def hello():的下一行字符串。
这些字符串很特殊,他们被称为docstring,是documentation strings的缩写。它们通常有好几行,并且被三个单引号( ’ ’ ’ )或者三个双引号(“ ” ” )封装起来。
1
2
3
4
5
Spyder开发环境同样提供了Help窗口,通常默认位于右上角。
当光标在一个对象名字之上,按下CTRL+i(在MAC中按下CMD+i),我们可以获得同使用help(hello)一样的信息。

这在console和Editor中都起作用。
更新对象
简单策略:重新执行整个程序
在Editor窗口,修改函数hello使其输出Good Bye World而不是Hello World。
按F5键执行整个程序,然后检查当前程序的输出:
Good Bye World

1
当你按下F5键时发生了什么?其实,Python遍历的整个hello.py文件,创建了一个新的函数对象hello(覆盖了之前的函数对象hello),然后执行了整个函数。
我们看一下细节
我们需要从一个定义清晰的情形开始。为了做到这一点,请你将函数hello()改回输出Hello World的情况,然后按F5键执行整个程序,检查输出应该是Hello World。
在console命令提示区调用hello()函数。你会看到输出Hello World。
现在在editor窗口改变函数使其打印Laters World,然后保存文件,但不要执行程序(不按F5键)。
在console中调用hello()函数。你会看到输出是Hello World,如下:
In [ ]: hello()
Hello World

为什么会这样?因为console中的hello函数对象是打印Hello World的旧的函数对象。因此,因此我们在editor中改变hello.py(用Laters World代替了Hello World)文件并不会影响之前在console中创建的对象。
1
2
有两种方法可以更新hello函数的版本:
方法一:按F5键重新执行整个hello.py文件,这一操作会生成一个新的hello函数对象,并覆盖旧的。你会发现,当你按下F5键,在console命令提示区调用hello(),会输出新的文本Laters World。
方法二:选中你改变的区域,在这个例子中是整个hello函数,从def hello():开始到print(“Laters World”)结束,然后选择Run > Run selections。
这样就会更新console中的hello对象,而不用重新执行整个hello.py文件:
In [ ]: def hello():
...: """Print "Hello World" and return None"""
...: print("Laters world")
...:

如果现在写入hello(),我们会看到更新后的输出:
In [ ]: hello()
Laters world

1
2
1
2
3
4
在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']12345678910
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
求资产总额
h7氙气灯线束能和h4氙气灯泡连接吗
一位残月照孤舟,二位乾坤日夜!浮,三位抽刀
面试官:你花钱请客,朋友带十个陌生人来怎么
letter是什么意思?
关于小尾指的问题
小军鼓滚奏打法
有宝宝吃过七仁丹的吗
孟买跟北京时间差几个小时?
敢问偷书人,你的良心不会痛吗
粤语歌,歌词同一个怕羞的你 ,是什么歌?
7米大一些还是75O大一些
想知道: 汕头市颐海御景在哪?
迪奥丰唇蜜怎么看日期
表演专业 声乐表演
推荐资讯
安徽肥东长临镇划在哪个区
有黑枸杞图片吗?
梦到车门关不上是什么意思
2016年吕梁交城水费多少钱
求24伏5安直流输出稳压电路图
衣表堂堂哪个字错了
房屋是父母生前才产现在房产证哥哥名字曾予给
说是柘树,但叶子又不一样,有知道的吗
pet为什么要选择三工位的注吹机
茶文化的三个主要社会功能是什么?
十八烷不饱和脂肪酸二聚物是不饱和的吗
1.某烃中各元素质量分数 C:92.3% H:7.7% 烃
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?