输入多行代码,以便稍后在Python REPL

时间:2016-08-24 02:01:46

标签: python

我今天刚拿起一本关于编程的基础书。编码语言是Python,我只是尝试了几个小时,但我已经卡住了,因为我无法弄清楚如何编写多行代码。例如,当我写print(" one")然后按Enter键时,它只运行它并打印单词one。我怎样才能打印出一个字,然后在下面的一行打印出两个字?此外,当我点击标签时,它只移动4个空格左右。我无法弄清楚如何让它不运行第一个命令,只是给我'>>>'在下一行。所以我想我要问的是:我需要用什么键击来获得类似的东西:

>>> print("one")
>>> print("two")

非常感谢!

(对不起这个基本问题,但我对这个问题感到很困惑。)

3 个答案:

答案 0 :(得分:2)

Python REPL在完全输入后立即自动执行每个命令。这就是它被称为“read-eval-print循环”的原因。它接受一个输入,对其进行评估,然后打印结果。

如果要一次执行两个完整的命令,可以在它们之间加一个分号,如下所示:

print("one"); print("two")

我之前说过“完全输入”,因为某些命令固有地需要多行,所以Python必须在命令“完全输入”之前接受几行输入。三种类型的命令工作如下:流控制命令(defwhileiffor等,适用于它们下面的几个缩进行),多行表达式(括号或括号内的计算),或在行尾使用反斜杠(\)的语句,表示它在下一行继续。因此,如果您输入以下任何一个块,Python将等到块完全完成后再进行评估。

if 1 + 1 == 2:
    print "True"
else:
    print "False"

print(
    1 + 1
)

print \
    1 + 1

你也可以将这两种策略结合起来,输入如下内容:

print("one"); \
print("two")

Python将等待输入两个命令,然后立即运行它们。但我从未见过有人以这种方式编写代码。

或者,您可以在不同的文本编辑器中一起键入几个命令,然后将它们粘贴到Python REPL中,例如,将以下内容复制并粘贴到REPL中(但是您将在命令之间打印结果):

print("one")
print("two")

或者,通过使用与Python不同的接口,您可能几乎可以获得您最初期望的行为。 IPython Notebook是一个不错的选择,或者您可以尝试Spyder或PyCharm编辑器,它们允许您选择几行代码并运行它们。

或者,如果您想要一次性运行更长的脚本,最好的选择是在文本文件(例如,script.py)中键入它,然后告诉python运行它,例如,从系统命令提示符(而不是Python解释器)键入python script.py,或在IDLE编辑器中按F5。

答案 1 :(得分:1)

您可能想要尝试的一件事是将代码写入文件,例如learning.py,然后使用python learning.py在命令行上运行该文件。

答案 2 :(得分:0)

在python中使用“控制台”感觉更好地支持多行命令的最佳方法是使用ipython qtconsole或Jupyter qtconsole作为其现在称为:http://jupyter.org/qtconsole/stable/。使用qtconsole时,按Ctrl-Enter将延迟命令运行,即使它不是一个复杂的块。您可以根据需要多次按Ctrl-Enter,然后按Enter键以全部运行它们。然后点击箭头将再次调出整个块进行编辑,与常规的ipython控制台不同,干净地缩进。

注意:这是不是 ipython笔记本,也不是常规的ipython控制台,而是使用相同内核的单独内容。与终端相比,qtconsole还有一些其他好处,比如更好的语法高亮和内联绘图。