gpt4 book ai didi

python - 向 IPython 添加语法?

转载 作者:太空宇宙 更新时间:2023-11-03 11:27:41 25 4
gpt4 key购买 nike

我想对(我安装的)IPython 添加一些语法更改。例如,我可能想使用 \+ 来表示 operator.add .我想象我可以插入一些代码来处理输入并将其转换为实际的 (I)Python,然后 IPython 可以进行自己的处理。但我不知道该把代码放在哪里。

(免责声明:请勿对生产代码或旨在供其他人查看/使用的代码执行此操作。)

最佳答案

下面是一个如何将 "\+ a b" 转换为 "a + b" 的例子。

from IPython.core.inputtransformer import StatelessInputTransformer

@StatelessInputTransformer.wrap
def my_filter(line):
words = line.split()
if line.startswith(r'\+ ') and len(words) == 3:
return '{} + {}'.format(*words[1:])
return line

ip = get_ipython()
ip.input_transformer_manager.physical_line_transforms.insert(0, my_filter())

请注意,这都是基于字符串的。此 Hook 在未评估的上下文中执行。这意味着您不能根据哪个值为ab 进行条件转换。在这种情况下,魔法最适合您的需要。

此外,在解析输入字符串时必须小心。在我的示例中,由于拆分,下面的 \+ (a * b) c 被破坏了。在这种情况下,您将需要一个标记化工具。 IPython 提供了一个带有 TokenInputTransformer 的工具。它的工作方式与 StatelessInputTransformer 类似,但它是使用标记列表而不是整行调用的。

只需运行此代码即可添加过滤器。如果您希望它在启动 IPython 时可用,您可以将其保存为 .py.ipy 文件并将其放入~/.ipython/profile_*/startup

https://ipython.org/ipython-doc/dev/config/inputtransforms.html

关于python - 向 IPython 添加语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30834914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com