用于防止从全局范围使用变量的python包。
safescope的Python项目详细描述
安全范围
safescope是一个小的python包,可用于jupyter笔记本的开发。
目标是防止函数使用全局变量,而是引发一个NameError
。
这是通过模拟一个模块并定义该模块中的所有函数(命名为side_scope
)来实现的。
示例
safescope的主要部分是decorator@safescope
。这模拟在文件side_scope.py
中编写函数并将此函数导入笔记本。因此,用@safescope
修饰的函数将无法访问笔记本环境中声明的变量。
在下面的示例中,只有foo(1)
将执行,因为bar(1)
返回NameError
。
fromsafescopeimportsafescopex=9deffoo(y):returnx+y@safescopedefbar(y):returnx+yfoo(1)# Returns 10bar(1)# Raise "NameError: name 'x' is not defined"
通过使用Imports
,将导入添加到主作用域和side_scope
中,使它们可用于用@safescope
修饰的函数。
fromsafescopeimportsafescope,ImportswithImports():importnumpyasnp@safescopedefarange(n):returnnp.arange(n)arange(4)# Returns array([0, 1, 2, 3])
安装
safescope可以通过pip从pypi安装/pip3:
pip install safescope
或来自github,其:
pip install git+git://github.com/havakv/safescope.git
或者通过克隆repo从源代码:
git clone https://github.com/havakv/safescope.git
cd safescope
python setup.py install