当前开发版本:
最新稳定版本:
信息:
使用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上可用。
来源于GitHub。
欢迎在
Issues那页。
如果您喜欢问题列表中已有的增强功能,
请对此发表评论;这将有助于确定优先顺序。
版权所有(c)Brian Skin 2017-2018
许可证:麻省理工学院的许可证。见LICENSE.txt
完整的许可条款。
欢迎加入QQ群-->: 979659372
推荐PyPI第三方库