我在我的研究中广泛使用IPython笔记本。我发现他们是一个很棒的工具。避免python范围错误的策略
但是,不止一次,我被来自变量范围的微妙错误所困扰。例如,我会做一些探索性的分析:
foo = 1
bar = 2
foo + bar
我决定foo + bar
是我的目的,一个有用的算法,所以我将其封装在一个功能,使其更容易应用到更广泛的投入:
def the_function(foo, bar):
return foo + bar
不可避免地,某处向下行,构建从地面工作流起来后,我将有一个错字某处(例如def the_function(fooo, bar):
)使得在所使用的全局变量(和/或经修饰的)函数调用。这会导致看不见的副作用并导致虚假结果。但是因为它通常会返回结果,所以很难找到问题实际发生的位置。
现在,我认识到这种行为是我经常故意使用的一个特性(为了方便,或者必要时,即函数闭包或装饰器)。但是当我不断遇到错误时,我想我需要一个更好的策略来避免这些问题(当前策略=“小心”)。
例如,一种策略可能总是在本地变量名称前加'_'。但我很好奇,如果没有其他策略 - 甚至是“pythonic”策略,或社区鼓励策略。
我知道python 2.x在某些方面与python 3.x的区别不同 - 我使用python 3.x.
此外,策略应该考虑科学计算的交互性,就像在IPython Notebook场地中使用的那样。
想法?
编辑:更具体地说,我在寻找IPython Notebook策略。
使用模块并避免全局性 – dawg 2015-04-02 17:09:06