未提供项目说明
localscope的Python项目详细描述
交互式python会话,如Jupyter notebooks,是分析数据、生成可视化和训练机器学习模型的优秀工具。然而,交互性允许全局变量意外地泄漏到函数的作用域中,从而导致意外的行为。Localscope通过限制函数可以访问的变量,使您安心。在
>>>a='hello world'>>>@localscope...defprint_a():...print(a)Traceback(mostrecentcalllast):...ValueError:`a`isnotapermittedglobal
动机和详细例子
假设您正在计算两个数字列表之间的均方误差,包括一个比例因子sigma。在
^{pr2}$一切都很好,您将代码打包到一个函数中以备以后使用,但是忘记了之前在笔记本中引入的比例因子。在
>>>defevaluate_mse(xs,ys):# missing argument sigma...returnsum(((x-y)/sigma)**2forx,yinzip(xs,ys))>>>mse=evaluate_mse(xs,ys)>>>round(mse,5)0.55102...
变量sigma是从全局范围获得的,代码执行时没有任何问题。但输出受sigma值变化的影响。在
>>>sigma=13>>>evaluate_mse(xs,ys)0.15976...
这个例子似乎有点做作。但是,从全局作用域到局部函数作用域的意外信息泄漏通常会导致不可恢复的结果、花费数小时的调试时间以及许多内核重新启动以确定问题的根源。Localscope通过限制允许的作用域来解决此问题。在
>>>fromlocalscopeimportlocalscope>>>@localscope...defevaluate_mse(xs,ys):# missing argument sigma...returnsum(((x-y)/sigma)**2forx,yinzip(xs,ys))Traceback(mostrecentcalllast):...ValueError:`sigma`isnotapermittedglobal
接口
.. autofunction:: localscope.localscope
- 项目
标签: