用于处理jupyter notebook、ipython等中的临时变量的上下文管理器。
tempvars的Python项目详细描述
当前开发版本:
最新稳定版本:
信息:
使用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 不将任何屏蔽变量还原到 上下文退出。这可能有助于避免 下游单元格的常用辅助变量(arr,df,i等) 可能是在笔记本中创建的:
>>>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
在PyPI:pip install tempvars上可用。
完整文档位于 Read the Docs。
来源于GitHub。 欢迎在 Issues那页。 如果您喜欢问题列表中已有的增强功能, 请对此发表评论;这将有助于确定优先顺序。
版权所有(c)Brian Skin 2017-2018
许可证:麻省理工学院的许可证。见LICENSE.txt 完整的许可条款。