未提供项目说明

localscope的Python项目详细描述


https://github.com/tillahoffmann/localscope/workflows/CI/badge.svghttps://img.shields.io/pypi/v/localscope.svg?style=flat-squarehttps://readthedocs.org/projects/localscope/badge/?version=latest

交互式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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
爪哇领导人选举   java查询MongoDB数组并使用最匹配的元素进行排序   java使用Maven在Tomcat上生成和访问WSDL   java从给定列表中做出不同的选择   java读取netflow/rflow(ddwrt)数据包内容   jaxb反序列化XML以在Java中动态创建类   通过Java执行的Curl命令在windows中有效,而不是在linux中   java同步方法是否阻止更新对象字段?   带有自定义适配器崩溃应用程序的java Android ListView   java字符串到字符串数组的转换   使用redis缓存java对象:为什么它比ConcurrentHashMap更好?   java再次加载jni库时会发生什么?   java ClassNotFoundException在JustSerialized类的反序列化期间发生