spyder consoles 怎么使用 python console

spyder consoles 怎么使用 python console,第1张

1、ycharm每次RUN都会打开一个新的python Console,不利于观察数据结果。

2、点击 RUN --Edit Configuration ,进入设置界面。

3、在左边菜单列表,点击当前工程名,右边会出现Configuration 界面,默认 Run With Configuration 是勾选的。

4、取消 Run With Configuration 是勾选。

5、退出程序,然后再次进入工程,运行该程序,还是没生成新的 python Console。说明设置起效,但是只对该工程有效。

最近刚好写了一个python的折叠功能。 能简单。 是基于emacs自带的python mode。可以支持各种类型的block (如if, for等)。  关键是: mypython-fold/unfold-block。 我把它绑到了F10 可以自己改。 其他都只是些支持代码

(defface codepilot-folding-overlay 

   '((default (:inherit region :box (:line-width 1 :color "DarkSeaGreen1" :style released-button))) 

     (((class color)) (:background "DarkSeaGreen2" :foreground "black"))) 

   "Font used by folding overlay" 

   :group 'codepilot) 

   

(defun cptree-ov-delete () 

   (interactive) 

   (dolist (o (overlays-at (point))) 

     (cptree-delete-overlay o 'cptree))) 

   

(defvar cptree--overlay-keymap nil "keymap for folding overlay") 

   

(unless cptree--overlay-keymap 

   (let ((map (make-sparse-keymap))) 

     (define-key map [mouse-1] 'cptree-ov-delete) 

     (define-key map "\r" 'cptree-ov-delete) 

     (setq cptree--overlay-keymap map))) 

   

(defun cptree-delete-overlay(o prop) 

   (when (eq (overlay-get o 'cptree-tag) prop) 

     (delete-overlay o) 

     t)) 

   

(defun cptree-hide-region (from to prop) 

   "Hides a region by making an invisible overlay over it and save the 

overlay on the hide-region-overlays \"ring\"" 

   (interactive) 

   (let ((new-overlay (make-overlay from to))) 

     ;;(overlay-put new-overlay 'invisible nil) 

     (overlay-put new-overlay 'cptree-tag prop) 

     (overlay-put new-overlay 'face 'codepilot-folding-overlay) 

     (overlay-put new-overlay 'display 

                  (propertize 

                   (format "<%d lines>" 

                           (1- (count-lines (overlay-start new-overlay) 

                                            (overlay-end new-overlay)))))) 

     (overlay-put new-overlay 'priority (- 0 from)) 

     (overlay-put new-overlay 'keymap cptree--overlay-keymap) 

     (overlay-put new-overlay 'pointer 'hand))) 

   

(require 'python) 

   

(defun mypython-fold/unfold-block () 

   "fold the block" 

   (interactive) 

   (let (ret b e) 

     (dolist (o (overlays-at (if (python-open-block-statement-p) 

                                 (save-excursion 

                                   (python-end-of-statement) 

                                   (point) 

                                   ) 

                                 (point)))) 

       (when (cptree-delete-overlay o 'cptree) 

         (setq ret t))) 

     (unless ret 

       (save-excursion 

         (unless (python-open-block-statement-p) 

           (python-beginning-of-block)) 

         (python-end-of-statement) 

         (setq b (point)) 

         (python-end-of-block) 

         (setq e (1- (point))) 

         (cptree-hide-region b e 'cptree))))) 

   

(define-key python-mode-map [(f10)] 'mypython-fold/unfold-block)

方法如下:

1、打开Spyder,点击打开顶部工具栏中的Tools选项;

2、在弹出的子菜单中,点击preferences选项;

3、接着切换到general栏目,在右侧找到fonts选项,在Size选项中设置需要的大小即可。

spyder大致就是和python一样的编写程序的软件。而spyder source是这个软件中代码的来源,这种代码的来源就是从文件导入进来的代码,这时候可以根据设置中的代码来源路径去寻找代码的来源。当然也可以从电脑的存储盘进入,直接去寻找代码的来源。Spyder的界面由许多窗格构成,用户可以根据自己的喜好调整它们的位置和大小。当多个窗格出现在一个区域时,将使用标签页的形式显示。因此,代码的来源可以通过多种方式来寻找。

刚开始接触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(编辑窗)新建一个文件。将代码拷贝到文件中,并以hellopy文件名保存该文件。

为了执行这段代码,从菜单中选择Run > Run(或者按F5键),如果有需要请确认Run settings的设置。如果这是第一次运行代码,你可能会看到如下形式的输出:

In [1]: runfile('/Users/fangohr/Desktop/hellopy', 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…和其他一些关键字),它将马上执行这些命令。在hellopy文件中只在hello()的这一行才正真调用名为hello的函数。

如果你在代码中注释掉或者删除hello()这一行,再次执行整个文件(按F5键或者选择 Run > Run),将不会打印任何内容,因为函数hello只被定义了,但没有被调用。

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

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

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

调用console中的函数

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

在console中写入hello()(靠近In[],可以是任意正整数),然后按下Enter键。

你应该发现hello()函数又被执行了一遍,Hello World又被打印了一次。在console中调 用函数和输出的形式应该如下:

In [ ]: hello()

Hello World

1

2

你能发现它和执行整个代码之间的区别吗?

当你执行整个代码时,Python会遍历整个文件,创建一个hello函数对象(覆盖之间的 对象),当到达hello()这一行就调用这个函数。

如果我们在console中调用hello(),我们只是调用了之前执行整个hellopy文件在IPython console中定义的函数对象hello。

这些概念在多次练习或者处理更大一些的代码实例后会更加清楚。在稍后的阶段中你可能还会返回此教程。

查看定义在console中的对象

Python提供了一个函数,它可以显示console中当前命名空间中所有已知的对象。它就是dir():当你在console中写入dir(),你将得到一个对象列表。现在忽略所有以下划线开始的。你能看见hello在列表中吗?

注意:

如果你得到了一个定义对象的长列表,那么Spyder可能已经为你做了一些方便的导入。 为了强调这一点,你需要:

按上文介绍的步骤运行dir()。

重启命名空间

按F5键再次执行hellopy

一旦一个对象在当前命名空间中可见(例如本例中的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遍历的整个hellopy文件,创建了一个新的函数对象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中改变hellopy(用Laters World代替了Hello World)文件并不会影响之前在console中创建的对象。

1

2

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

方法一:按F5键重新执行整个hellopy文件,这一操作会生成一个新的hello函数对象,并覆盖旧的。你会发现,当你按下F5键,在console命令提示区调用hello(),会输出新的文本Laters World。

方法二:选中你改变的区域,在这个例子中是整个hello函数,从def hello():开始到print(“Laters World”)结束,然后选择Run > Run selections。

这样就会更新console中的hello对象,而不用重新执行整个hellopy文件:

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']12345678910111213141516171819

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

遵守PEP8规则

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

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

参数设置

参数在哪配置

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

在Windows和linux系统,使用Tools > Preferences

在Mac OS中,使用Python/spyder > Preferences

设置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:

方便的快捷方式

F5执行当前文件。

Tab键自动补全命令、函数名、变量名、Console(Python和IPython)和Editor中的方法名。这个特点也很有用,将来你可能会频繁地使用。现在你就可以尝试一下这一功能。假设你定义了一个变量:

mylongvariablename = 42

假设我们需要写代码计算mylongvariablename + 100,我们只需要输入 my 然后按Tab键。如果这个变量名是唯一的,在光标位置会自动补齐变量名,然后再继续输入 + 100。如果以字母my开头的变量名不是唯一的,按下Tab键之后会列出所有以my开头的变量名以供选择,之后可以使用上下键选择,也可以输入更多的字母匹配。

Ctrl+Enter执行当前cell(在菜单中Run > Run Cell)。Cell是以#%%开头的两行之间的代码。

Shift+Enter执行当前cell并将光标移到下一个cell(菜单中选择Run > Run cell and advance)。

Cells可实现将大的文件或代码段以小单元执行。

Alt+把当前行向上移一行。如果很多行被选中,它们将被一起移动。 Alt+则是相对应的将某(些)行向下移。

Ctrl+鼠标左键 在一个函数/方法名上使用Ctrl+鼠标左键,打开一个新的editor窗口显示这个函数的定义。

Ctrl + +(Cmd + +在MacOS),将增大Editor窗口的字体,Ctrl + -则相反。在IPython窗口中也适用。

Help或者python console窗口中的字体则通过Preferences > Help设置。

Variable Explorer则没办法改变。

Ctrl + s(Cmd + s在MacOS上)保存当前Editor窗的文件。这还会在编辑器的左栏中强制更新各种警告三角形(否则它们默认2到3秒更新一次)。

Ctrl + s(Cmd + s在MacOS上)在IPython console窗将会把当前IPython会话以HTML文件保存,包括任何显示在命令行的参数。这样可以快速记录在会话中完成了什么。

(但是不能将这个HTML 文件再次加载到会话中,如果你需要这样的功能,请查看 IPython Notebook。)

Ctrl + i(Cmd + i在MacOS上),当光标在一个对象上时使用,将在help窗口显示这个对象的文档。

执行设置

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

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

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

def hello(name):

"""Given an object 'name', print 'Hello ' and the object"""

print("Hello {}"format(name))

i = 42

if __name__ == "__main__":

hello(i)12345678

在当前Python或者IPython console中执行

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

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

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

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

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

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

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

然而,在当前console中执行Editor中的代码也意味着:

3其他定义与console会话中的其他(全局)对象对于执行的代码也是可见的。

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

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

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

运行hellopy文件,变量i在console中就是一个全局变量。

编辑hellopy文件,删除i = 42这一行。

再次执行hellopy文件。在这时调用hello(i)依然不会出错,即使现在的hellopy文件中已经没有定义i,因为console中之前已经存在变量i了。

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

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

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

在一个独立的Python console中运行

在Run > Configure下选择Execute in new dedicated Python console,在每次运行hellopy程序时都会重新开启一个新的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()函数:

你应该以如下形式编辑说明文字:

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 05(a + b)

Example

-------

>>> average(5, 10)

75

"""

return (a + b) 05123456789101112131415161718192021222324

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

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

方法一:全程在cmd中操作

1)先在conda中创建一个名为python2的环境,并下载对应版本python27

conda create --name python27 python=27

2)激活python2环境

activate python2

这里写描述

3)在python2的环境下下载spyder和Jupter notebook

conda install spyder

1

这里写描述

因为我这里已经装过spyter了,如果第一次安装,系统会让你确定是否下载,输入 y 即可。

4) 下面我们可以看到菜单栏已经有了python2的spyter了。

这里写描述

5)下载Jupyter notebook,一样的方法。

conda install jupyter

这里写描述

这里写描述

这样,你想用python3编写代码时,就打开python3的spyder;你想用python2编写代码时,就打开python2的spyder。两种环境的切换非常方便。

方法二:在Anaconda Navigator中实现(相对简单,耗时,不推荐)

1) 打开Anaconda Navigator

这里写描述

2) 进入environment,选择你要安装python2的环境,或者可以按底部的Create新建环境名和对应的python版本。

这里写描述

3) 然后选择在你的想要的环境中下载spyder和jupyter notebook。

这里写描述

4) 但是,因为Anaconda Navigator的环境不稳定,容易出现屏幕卡死或者闪退现象,不推荐这种方法。

附加:给Jupter notebook设置主目录的方法

1) 当你下载好jupter notebook后打开界面,是什么样的呢?是否同作者一样?

这里写描述

2) 不难看出,此时刚下载好的jupter notebook默认的路径是C盘。那么下面我们把它设置成我们自己要的目录,这里我以:‘F:\pythonWork ‘为例。

3) 在cmd中输入:

jupyter notebook --generate-config

第一次修改则输入:y

4) 找到输出的文件夹的目录,用记事本打开。

文件夹的目录一般在:C:\Users\Administrator\jupyter

搜索:notebookdir

将你要的路径设置在里面。

这里写描述

5) 然后保存。再次打开upyter notebook,就变成你要的路径了。

欢迎分享,转载请注明来源:表白网

原文地址:https://h5.hunlipic.com/biaobai/3985220.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2024-04-08
下一篇2024-04-08

发表评论

登录后才能评论

评论列表(0条)

    保存