【问题标题】:What is the usage of tag over the cell in jupyter?jupyter中单元格上的标签有什么用?
【发布时间】:2017-12-28 21:54:42
【问题描述】:
我发现,在jupyter notebook中,单元格上方有一个标签工具,可以通过“查看-单元格工具栏-标签”激活。但我想不通,为什么我们需要这些标签。有人可以提供一些建议或使用示例吗?
【问题讨论】:
标签:
python
jupyter-notebook
【解决方案1】:
标签是 jupyter-notebooks 的一个相当新的功能,可能还没有完全完成,添加了version 5.0。据我了解,它们主要用于诸如nbconvert(将笔记本转换为其他格式,如pdf)和nbval(验证笔记本)等工具以及与jupyter笔记本一起使用的或多或少的集成工具。能够将标签添加到单元格将根据单元格标签启用此类工具的不同行为。可以通过添加标签的能力来完成的一些示例是:
- nbconvert - 隐藏单元格,隐藏输入,使输出可见,
折叠一个单元格,留下一个显示它的方法
- nbconvert to latex - markdown 单元格包含标题(或副标题、摘要...)
- nbval - 检查/忽略单元格的输出,跳过执行单元格,等待单元格
引发错误
- nbgrader - 解决方案单元,测试单元
- nbparameterise - 单元格包含输入参数。
正如 takluyver 在jupyter's github 所设想的那样。如果您想了解更多关于实施的信息以及围绕它的讨论,您可以阅读更多here。
【解决方案2】:
除了 Christian 的回答之外,您还可以通过使用标签获得一个重要的实用程序。即使遇到运行时错误,您也可以运行所有单元并继续运行。你用raises-exception 标记一个单元格。对于教育目的非常有用。 Source.
【解决方案3】:
正如上面 Christian 所指出的,一个很好的用途是为这个 notebook 程序提供不同的输入参数值,nbparameterise 就是一个例子。 See here。 Papermill 是另一个:see here
从用户的角度来看,使用 env 变量 os.getenv() 或从命令行参数 sys.getargv() 获取可能可以实现相同的目的,但向单元格添加标签似乎是最简单的。
在后台,jupyter notebook 保存为 json 文件。假设您将第一个单元格标记为参数,并声明变量 var1=10 和 var2 ='adam'。 json 文件如下所示,标签位于元数据部分。因此,一个工具可以很简单地解析这个 json 并到达标签部分,并说用不同的值替换变量。
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"tags": [
"Parameters"
]
},
....
},
"source": [
"var1 = 10",
"var2 = 'adam'"
]