忽略Python函数中的全局变量

时间:2015-10-30 10:01:26

标签: python global-variables ipython ipython-notebook

我喜欢IPython Notebook并且我将它用于探索性数据分析,在那里我尝试了大量不同的东西,直到工作。但是,我经常会犯同样的错误。让我把一个例子说成一个例子:

我通常会开始在IPython中进行测试:

a = 10
print a + 5

直到我得到理想的结果。一旦我开始工作,我倾向于将代码重新配置为函数:

def add5(b):
    return b + 5

哪个是正确的重新定义..但是,由于代码有时非常复杂(而且很大),我最终会重命名错误而不是写:

def add5(b):
    return a + 5

请注意a而不是重命名的b。只要a存在于工作空间(确实存在),此函数将返回一个值。这个错误很烦人,有时需要很长时间才能意识到错误,有时甚至不可能意识到由于函数的复杂性而导致出现问题。

是否有任何单元魔法,装饰器或其他东西强制函数忽略全局变量?

我会喜欢这样的东西:

@ignore_globals   ## or %%ignore_globals
def add5(b):
    return a + 5

如果在函数内部未定义a(无论是在定义还是在运行时),上述内容都会提示错误。假设工作区中存在aglobals())。

这在实践中引入了另一个问题,即导入的模块和其他使用的已定义的函数也在{{1}中(并且应该可以访问)..

0 个答案:

没有答案