IPython 快捷方式,提示和技巧
IPython(和 Jupyter Notebook)定义了下划线的特殊含义。它始终包含最新的输出。这在以多个步骤处理数据时非常有用。这在上面的例子中得到证明。要清理文本,它会通过一些正则表达式运行,然后在拆分之前进行标准化。在 IPython 之外,每个结果都必须存储在一个新变量或嵌套的步骤中。在 IPython 中,我们经常探索并跟踪变量或重现一系列嵌套调用是乏味的。所以这就是下划线出现的地方。
有一个问题。如果为全局范围中的下划线指定值,则会导致意外行为。例如:
address = ('http://example.com', 80)
(_, port) = address
在这里,我只对元组中的第二个元素 - 端口号感兴趣。所以我遵循约定并将第一个元素分配给下划线以表明它是一次性的。但是,现在下划线的值是 http://example.com
。如果我要运行更多代码:
1+4
下划线的预期值为 5.但是,它不是。该值仍然是元组中的域。当你在全局范围内分配下划线时,它不仅会破坏该值,还会停止存储最新的输出。如果在函数或循环内分配下划线,则不是这种情况。