当我第一次开始阅读 Python 时,所有的教程都让你使用 Python 的交互模式。很难保存、编写长程序或编辑现有的行(至少对我而言)。与打开 code.py 文件并在该文件上运行解释器相比,编写 Python 代码似乎要困难得多。
python code.py
我来自 Java 背景,所以我对为程序编写和编译文件有着根深蒂固的期望。我也知道,如果某个功能在某种程度上没有用,那么它在 Python 文档中就不会那么突出。那么我错过了什么?
当我第一次开始阅读 Python 时,所有的教程都让你使用 Python 的交互模式。很难保存、编写长程序或编辑现有的行(至少对我而言)。与打开 code.py 文件并在该文件上运行解释器相比,编写 Python 代码似乎要困难得多。
python code.py
我来自 Java 背景,所以我对为程序编写和编译文件有着根深蒂固的期望。我也知道,如果某个功能在某种程度上没有用,那么它在 Python 文档中就不会那么突出。那么我错过了什么?
让我们来看看:
如果您想知道某件事是如何工作的,您可以尝试一下。无需编写文件。我几乎总是在编写程序之前先在解释器中编写程序。这不仅仅是因为你不知道它们在编程语言中是如何工作的。我不记得创建范围的正确参数是什么,例如 [-2, -1, 0, 1]。我不需要。我只需要启动解释器并尝试一些东西,直到我弄清楚它是range(-2, 2)
(实际上是刚刚做到的)。
您可以将其用作计算器。
Python 是一种非常内省的编程语言。如果您想了解有关对象的任何信息,只需执行dir(object)
. 如果您使用 IPython,您甚至可以使用object.<TAB>
制表符完成该对象的方法和属性。这比在文档甚至代码中查找内容要快得多。
help(anything)
用于文档。它比任何网络界面都快。
同样,您必须使用 IPython(强烈推荐),但您可以计时。 %timeit func1()
并且%timeit func2()
是确定什么是更快的常用习语。
您想编写一个程序使用一次,然后再也不会使用的频率。最快的方法是在 Python 解释器中进行。当然,你必须小心编写循环或函数(它们必须在第一次使用正确的语法),但大多数东西都是一行一行的,你可以玩弄它。
调试。当您在解释器中编写代码时,您无需将选择性打印语句放入代码中即可查看变量是什么。你只需要输入>>> a
,它就会显示是什么a
。很高兴再次看到您是否正确构建了某些东西。构建 Python 调试器 pdb 也使用 intrepeter 功能,因此您不仅可以在调试时查看变量是什么,还可以在不停止调试的情况下 操作甚至更改它。
当人们说 Python 开发速度更快时,我保证这是他们谈论的重要内容。
评论者:我忘记了什么?
REPL 循环(如 Python 的交互模式)为程序员提供即时反馈。因此,您可以快速编写和测试小段代码,并将这些段组装成一个更大的程序。
您是在谈论通过简单地输入“python”在控制台中运行 Python 吗?那只是为了小测试和练习语言。在学习语言和测试其他模块时非常有用。
当然,任何真正的软件项目都是用 .py 文件编写的,然后由解释器执行!
Python 解释器是最小的共同点:您可以在多个平台上运行它,并且它的行为方式相同(模平台特定模块),因此很容易让新手使用。
告诉新手启动解释器并“执行此操作”比让他们打开文件、输入一些代码、保存、使其可执行、确保 python 在您的 PATH 中或使用 #! 行等。废弃所有这些,然后启动解释器。对于简单的示例,您无法击败它。它从来都不是用于长程序的,所以如果你使用它,你可能会错过教程中告诉你“更长的脚本进入文件”的部分。:)
在将代码片段放入脚本之前,您可以使用交互式解释器来测试它们。
我使用交互模式的一件事是其他人没有提到的:查看是否安装了模块。只需启动 Python 并尝试使用import
该模块;如果它死了,那么您的 PYTHONPATH 已损坏或未安装该模块。
对于“嘿,它在我的机器上不起作用”或“无论如何安装了哪个 Python”错误,这是一个很好的第一步。
如前所述,Python 交互式解释器提供了一种快速而肮脏的方式来测试简单的 Python 函数和/或代码片段。
我个人使用 Python shell 作为一种非常快速的方式来执行简单的数值运算(由math
模块提供)。我有我的环境设置,因此每当我启动 Python shell 时都会自动导入数学模块。事实上,这是向非 Python 爱好者“推销” Python 的好方法。向他们展示如何使用 Python 作为一个简洁的科学计算器,以及简单的数学原型。
我发现交互式解释器非常非常适合测试快速代码,或者向他人展示 Python 的力量。有时我也将解释器用作方便的计算器。您可以在很短的时间内完成的事情令人惊讶。
除了内置控制台,我还不得不推荐Pyshell。它具有自动完成功能和不错的语法突出显示功能。您还可以一次编辑多行代码。当然,它并不完美,但肯定比默认的 python 控制台好。
使用 Java 编码时,您几乎总是会在某个浏览器窗口中打开 API。但是,使用 python 解释器,您始终可以导入您正在考虑使用的任何模块并检查它提供的内容。您还可以测试您不确定的新方法的行为,以消除“哦!原来是这样”作为错误来源的。
交互模式可以在将代码片段合并到更大的程序之前轻松测试它们。如果您使用 IDLE,则会有语法高亮和参数弹出窗口来帮助您。这也是一种快速检查您是否已了解如何使用模块而无需编写测试程序的方法。