这两个Python工具真香!修改代码不会影响运行!
你是否运行过for循环并希望在for循环内的代码中添加更多详细信息?你可能会决定不这样做,因为添加更多详细信息意味着需要停止代码并重新运行所有内容。
代码已经运行了几个小时,停止代码会让人不爽。如果可以在每次迭代中重新加载循环体而不丢失如下所示的状态,那不是很好吗?
在本文中,我将向大家展示两个工具,这些工具可在Python文件更改时重新加载代码或运行任意命令。
1、Entr
Entr:Python文件更改时运行任意命令
entr 工作原理
允许你在文件更改时运行任意命令。为了了解entr会有什么帮助,我们想创建一个函数,该函数需要一个数字列表并返回偶数。
我们将上面的文件命名为entr_examples.py,然后使用pytest检查get_evens函数是否返回偶数。
$ pytest entr_examples.py
测试失败,因为我们尚未向get_evens函数添加任何代码。要尝试以其他方式获取偶数,请在代码更改时使用entr重新运行pytest entr_examples.py命令。
$ ls entr_examples.py | entr python entr_examples.py
太cool了,通过使用entr,我们无需在开发功能时再次重新运行同一命令。由于"测试驱动开发"的第一条法则是"除非编写了失败的单元测试,否则你不得编写生产代码",因此entr鼓励开发人员以其他方式测试编写代码的方法,直到其起作用为止。
语法
以下是entr的常规语法:请注意,如果想一次跟踪多个Python文件,请使用ls * .py
安装
要在MacOS上安装entr,请输入:
brew install entr
要在Ubuntu上安装entr,请输入:
sudo apt-get update
sudo apt-get install entr
另一个选择是克隆entr repo并按照安装说明进行操作。
2、Reloading
Reloading:重新加载循环主体而不会丢失其状态
要了解 Reloading 的有用性,我编写了一个打印偶数的 python 函数。但是,在循环运行时,还希望它在不停止循环的情况下输出奇数。
通常,这无法在Python中完成。在下面的代码中,即使我们在执行过程中将 「print(f'{num} is odd')」 添加到循环主体中,输出中也没有奇数。
但是,可以很容易地通过重新加载来完成。下面的GIF显示了如何将重载添加到循环中可以有所作为。
如我们所见,在执行过程中向循环体中添加else语句后,将打印出奇数!
Reloading 在这里似乎并没有真正的帮助,因为执行for循环不需要花费很长时间。但是,如果你已经训练了数小时的深度学习模型,并且想要在每个 epoch 中打印更多统计信息而不停止循环,这将变得非常方便。
语法
要使用reloading,只需将其添加到如下所示的Python循环中:
安装
pip install reloading
结论
刚刚我介绍了如何在更改Python文件时运行任意命令,并重新加载Python循环主体而不会丢失其状态。现在,如果你感兴趣,可以在日常工作中进行尝试,关注我获取更多有意思的干货!
另外,再送大家一份《Python数据科学手册》
以大数据、云计算、物联网、人工智能等新技术所推动的数字化转型正迅速的改变着我们所处的时代,各大互联网公司都积累了大量的用户数据,比如购物、社交、出行等。充分挖掘数据价值,就是需要不断的和数据打交道。
如果你对数据分析、数据挖掘、数据化运营感兴趣,却又无从下手,那么我来给你推荐一本不错的书籍--《Python数据科学手册》。
领取方式:
长按扫码,发消息 [数据分析]