我有一个允许用户启动交互式Python会话的应用程序。因此,我的重要功能被添加到本地集合中:
code.interact( local = get_my_functions() )
这是一个天真的用户只需键入函数而不必担心导入:
>>> my_function( ... )
(Nb:这是用户界面的一部分,并不排除高级用户将我的应用程序导入库并正常使用)
我希望与Jupyter笔记本实现相同的功能。这基本上涉及相同的事情 - 将我的函数添加到交互式会话的本地。
由于我无法使用code.interact( locals = ... )
,我考虑在脚本开头定义以下内容:
def add_builtins()
builtins.__dict__.update( get_my_functions() )
然后在笔记本中调用add_builtins
。但是我可以看出为什么这可能被认为是不好的做法:我只希望为交互式会话添加到本地,而不是在整个会话中覆盖内置。
我也考虑过:
globals().update( get_my_functions() )
但这需要这条线本身存在于笔记本代码中,以便检索相关的globals
字典,这很乱。
有更好的选择吗?