从 IPython Notebook 中的另一个单元格读取值并将它们提供给 "input()"

Read values from another cell in IPython Notebook and supply them for "input()"

举个例子,如果我有一个看起来像这样的单元格:

In [*]: for i in range(int(input())):
            print(i**2)

单元格为运行时,弹出输入框等待输入。当遇到 input() 时,是否有内置魔术命令或任何方式以编程方式提供值?

我写这个作为一个答案,虽然这或多或少是一个评论。

一种 "hacky" 方法是覆盖 input 或创建一个生成器,其中 return 是一个具有常量 return 值的输入函数。有点嘲笑它…

def input_generator(return_value):
    def input():
        return return_value
    return input

这将作为:

>> input = input_generator(42)
>> input()
42