小机灵鬼|程序员学Python编程或许不知的十大提升工具( 四 )


Python Shell可以很好地应用在许多交互任务中 。 但是 , 如果你使用过它 , 你可能已经发现它有一些缺陷 。 其中 , 最大的缺陷是Python Shell是纯文本环境 , 你必须在其中键入命令来执行给定的任务 。 更高级一点的Shell , 比如IPython , 支持GUI界面 , 这使交互环境更友好 , 这样你就不必记忆各种古怪的命令了 。
其实 , IPython不仅仅是一个简单的Shell 。 它提供了一个环境 , 你可以在这个环境中以新的方式和Python进行交互 , 例如以图形方式显示你使用Python创建的公式的结果 。 此外 , IPython还是一个容纳其他语言的前端 。 IPython应用程序向后台的真正的Shell发送命令 , 因此你可以使用其他语言的Shell , 比如Julia和Haskell 。 (即使你从未听说过这些语言 , 也不必担心 。 )
IPython最令人兴奋的特性之一是它能够在并行计算环境下工作 。 一般Shell都是单线程的 , 这意味着什么并行计算都做不了 , 你甚至不能创建多线程环境 。 仅凭这个特性 , IPython就值得你试一试 。
##8 使用PyUnit测试Python应用程序
某些时候 , 你需要测试一下自己的应用程序 , 以确保它们按照预期工作 。 测试时 , 你可以通过一次输入一个命令并验证结果来进行测试 , 或者将这个过程自动化 。 显然 , 自动化这个方法会更好 , 因为你可不想把所有时间都花在测试上 , 连回家吃饭的时间都没有了 , 而且手工测试非常非常慢(尤其是当你犯了错误时 , 这种情况肯定会发生) 。 PyUnit等工具极大地简化了单元测试(对单个特性进行的测试)过程 。
PyUnit的优点是允许你创建真实的Python代码来执行测试 。 简单地说 , 你编写的脚本是另一个专门的程序 , 用于测试主应用程序是否有问题 。
或许你会觉得脚本(非你专门编写的应用程序)中可能会有很多Bug 。 其实 , 测试脚本一般都设计得非常简单 , 这会大大减少脚本中的错误 , 并让脚本中的错误很容易被发现 。 即便如此 , 错误有时还是会出现 。 因此 , 当你无法找到应用程序中的问题时 , 你就的确需要检查一下脚本了 。
##9 使用Isort整理代码
整理代码看上去像是一件很小的事 , 但是如果你不注意这一点 , 你的代码很可能会变得乱糟糟的 , 尤其是当你没有把所有import语句按照字母顺序放到文件顶部时 , 代码看起来会更乱 。 在某些情况下 , 如果你的代码不够整洁 , 你就很难(并非不可能)弄清楚它到底怎么了 。 Isort实用程序只对import语句进行排序 , 并确保它们全部位于源代码文件的顶部 , 这看上去微不足道 , 但对你理解和修改源代码有很大的帮助 。
有时只要了解某个特定模块需要哪些模块 , 就可以帮助我们快速找出潜在的问题 。 例如 , 你的系统中安装了某个老版本的模块 , 那了解应用程序都需要哪些模块就可以使查找那个模块的过程变得更容易 。
此外 , 在把应用程序分发给用户时 , 了解应用程序需要哪些模块也很重要 。 只有用户的系统中安装了程序所需要的模块 , 才能确保程序按照预期运行 。
##10 使用Mercurial进行版本控制
你在学习本书的过程中创建的那些应用程序其实都不复杂 。 事实上 , 在你读完这本书并转向更高级的学习之后 , 你都不太可能需要版本控制 。 不过 , 当你进入一个有组织的开发环境中工作、实际开发满足用户需求的应用程序时 , 版本控制就变得非常重要 。 简单地说 , 版本控制就是跟踪发布到实际生产环境中的不同程序版本 , 并记录不同程序版本之间发生的变化 。 当你说你在使用MyApp 1.2时 , 你指的是MyApp应用程序的1.2版 。 为程序打版本标识很有意义 , 当程序修改了缺陷或进行了改进之后 , 版本标识能够让人们知道自己使用的是哪一个版本 。
Python版本控制工具有很多种 , 其中比较有趣的工具是Mercurial 。 对于几乎所有可运行Python的平台 , Mercurial都提供了相应版本 , 这样在更换平台时你就不必再担心无法使用Mercurial了 。 (对于你使用的平台 , 如果Mercurial没有提供相应的可执行文件 , 你可以从官方站点下载Mercurial源代码自己构建一个 。 )


推荐阅读