用于处理jupyter notebook、ipython等中的临时变量的上下文管理器。

tempvars的Python项目详细描述


当前开发版本:

https://travis-ci.org/bskinn/tempvars.svg?branch=devhttps://codecov.io/gh/bskinn/tempvars/branch/dev/graph/badge.svg

最新稳定版本:

https://img.shields.io/pypi/v/tempvars.svghttps://img.shields.io/pypi/pyversions/tempvars.svg

信息:

https://img.shields.io/readthedocs/tempvars/v1.0.1.svghttps://img.shields.io/github/license/mashape/apistatus.svghttps://img.shields.io/badge/code%20style-black-000000.svg

使用jupyter笔记本?

经常遇到过时变量带来的问题 在命名空间中?

tempvars有帮助。

在jupyter笔记本中开发有时会令人沮丧。 例如,调试一个工作表半小时会让人恼火, 结果发现一个携带的变量名 在笔记本命名空间中并导致问题。 或者,打开一个“运行良好”的笔记本 它被使用的时间,但仅仅是因为随机的,过时的变量 在命名空间中徘徊。 在函数/类中包装笔记本代码是避免 这些问题,但是 在笔记本开发的初始探索阶段执行此操作。

TempVars是一个上下文管理器,通过 在 它的作用域,然后在之后恢复它们(如果需要,也可以不恢复)。 此外,在托管上下文中创建的任何变量 符合TempVars筛选条件的将从中删除 退出时的命名空间,确保这些值不是虚假的。 参与以下代码。为了方便起见,所有变量 从入口和退出的命名空间删除 存储以供以后参考(参见下面的示例代码)。

由于python处理非全局作用域的方式,TempVars 只能在全局范围内使用。任何尝试 在非全局上下文中使用TempVars将 导致RuntimeError。可行的用例包括jupyter笔记本, ipython和基本python repls,以及executed和 导入的模块。初步测试表明,它还可以与 cauldron-notebook不过 由于它的step局部范围界定范式,它在那里可能没有什么帮助。 (共享值必须通过cauldron.shared传递)。


使用pip install tempvars安装后,导入为:

>>>fromtempvarsimportTempVars

对于Jupyter笔记本电脑的典型应用,推荐的方法是 选择一个标记,用于所有临时变量, 并将整个单元格括在TempVars上下文中。例如, 可以在所有临时变量前面加上t_ 在参数中开始参数:

>>>foo=5>>>withTempVars(starts=['t_']):...print(foo)...t_bar=8...print(foo+t_bar)513>>>print('t_bar'indir())False

类似的效果可以通过后缀来实现,例如 结束参数。

也可引入临时变量掩蔽 通过names参数以更具选择性的方式编码:

>>>foo=5>>>bar=7>>>withTempVars(names=['bar']):...print(foo)...print('bar'indir())5False>>>print(foo*bar)35

restore参数设置为False指示TempVars 不将任何屏蔽变量还原到 上下文退出。这可能有助于避免 下游单元格的常用辅助变量(arrdfi等) 可能是在笔记本中创建的:

>>>forkin['foo','bar']:...pass>>>print(k)bar>>>withTempVars(names=['k'],restore=False):...print('k'indir())False>>>print('k'indir())False

TempVars存储从命名空间中删除的变量的值, 是否需要访问它们。带有/as语句的绑定必须是 用于启用此功能:

>>>foo=5>>>withTempVars(names=['foo'])astv:...print('foo'indir())...print(tv.stored_nsvars['foo'])...foo=8...print(foo)False58>>>print(foo)5>>>print(tv.retained_tempvars['foo'])8

PyPIpip install tempvars上可用。

完整文档位于 Read the Docs

来源于GitHub。 欢迎在 Issues那页。 如果您喜欢问题列表中已有的增强功能, 请对此发表评论;这将有助于确定优先顺序。

版权所有(c)Brian Skin 2017-2018

许可证:麻省理工学院的许可证。见LICENSE.txt 完整的许可条款。

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

推荐PyPI第三方库


热门话题
java为什么在ng构建之后使用404?   java Maven原型“quickstart”无法扩展其POM   java Arduino端口卡在满功率状态   java如何确保在参数化构造函数失败时不调用默认构造函数?   java检测Blackberry中的切换失败   java如何将安卓库(作为Angle)链接到Eclipse项目?   java压缩图片,但获取“未知压缩方法”   java无法对应该初始化的模拟实例进行测试   将现有eclipse项目导出到war文件时,java“模块名无效”   java如何防止AppletClassLoader在查找类/其他资源时击中服务器?   java正则表达式根据分隔组的分隔符的数量获取n个组   java在JLayeredPane后面与JPanel交互   Java中的xml Soap请求   webView中的java utf8代码页