每次我在Python shell中输入时如何运行一个函数

时间:2016-01-19 10:06:39

标签: python automated-tests read-eval-print-loop

我有时会在交互式shell中编写小函数。

第一次它们很少是正确的,所以我花了很多时间在同一个测试集上运行我的函数版本来验证是否正确。

>>> def test_foo():
        print( foo(4) == 5 )
        print( foo(8) == 9 )
>>> def foo(x): return x + 1
>>> test_foo()
True
True

foo可能更复杂,我可能需要5次或更多次重写才能通过我的测试,因为手动运行套件很无聊,我需要这样的东西:

>>> def test_foo():
        print( foo(4) == 5 )
        print( foo(8) == 9 )
>>> :SET_ON_EXECUTION test_foo

现在,每当我重写foo函数并将其发送到定义时,测试也会运行。

一些研究

  • 搜索Google没有给出有用的答案。
  • 在shell python -h中没有告诉我该怎么做。
  • %quickref中的'ipython,<。

3 个答案:

答案 0 :(得分:3)

您可以在编辑器中编辑代码,并使用文件监视器在终端中运行测试,从而每次保存代码或测试文件时都会运行测试。

有关如何在文件更改时运行命令的信息(文件观察者),请参阅此问题的答案:https://superuser.com/questions/181517/how-to-execute-a-command-whenever-a-file-changes

答案 1 :(得分:3)

我强烈建议您使用Jupyter notebooks(以前称为IPython)。它允许您创建一个&#39; cell&#39;包含可以使用Ctrl-Enter组合键重新执行的代码。

例如,在您的情况下,您可以将函数定义和执行放在同一个单元格中,然后在编辑时轻松地重新执行它。

Jupyter notebook interface

通过这种方式,您可以逐步构建代码,一次修复和开发单个函数。

由于您已经安装了IPython,因此您应该能够启动并运行:

$ pip install jupyter
$ jupyter notebook

它将在您的浏览器中启动。点击&#39;新建&#39;创建新笔记本。在右上角,选择“笔记本”下的一个Python内核。

答案 2 :(得分:2)

由于您正在使用ipython,因此您只需创建一个whatever.py文件,其中包含您要在启动时运行的代码,然后通过{{1}运行ipython }。

您还可以通过modifying your ~/.ipython/ipy_user_conf.py运行Python代码:

  

ipython whatever.py目录中应该有一个简单的模板ipy_user_conf.py文件。它是一个普通的python模块,在IPython启动时导入,所以你可以做你想要的 - 导入模块,配置扩展,更改选项,定义魔术命令,在IPython命名空间中放置变量和函数等。你使用IPython扩展api对象,由~/.ipython获取并记录在&#34; IPython扩展API&#34;章,与IPython进行互动。

您也可以将a file called ipythonrc放在当前的工作目录中:

  

正如我们已经提到的,IPython读取的配置文件可以在命令行(IPython.ipapi.get())中指定,或者默认情况下被称为-rcfile。在启动IPython的当前目录中查找这样的文件,然后在ipythonrc中查找,这允许您拥有特定项目的本地配置文件。在本节中,我们将简单地称这些类型的配置文件IPYTHONDIR(资源配置文件的缩写)。

     

执行:给任何单行python代码执行。

     

execfile :执行使用rcfiles命令给出的python文件。用户名扩展是在给定名称上执行的。因此,如果您需要任何数量的额外花哨定制,这些定制不适合以上任何一种罐装&#39;选项,你可以把它放在一个单独的python文件中并执行它。