当两者存在相同的命令时,在 jupyter 中使用 `%` 而不是 `!` 有优势吗?

Is there an advantage of using `%` over `!` in jupyter when the same command exists for both?

例如当我使用!pip install ...时VSCode建议我使用%pip install ...。同样,!% 都有一个版本 mv。使用一个比另一个有优势吗?

主要区别在于,感叹号 ! 应该写在 IPython 笔记本中,然后要在笔记本中 运行 的任何 shell 命令之前。查看文档中的 Shell Assignment 以获得更多解释。

While Magics are specific to and provided by the IPython kernel. To work properly, Magics must use a syntax element which is not valid in the underlying language. For example, the IPython kernel uses the % syntax element for Magics as % is not a valid unary operator in Python.

除此之外,您还可以使用 IPython 创建和注册自己的魔法。您还可以在 PyPI 上找到许多用户定义的魔法。

所以我们可以说魔法 % 命令比标准 shell 命令提供了更多在 IPython 内核中定义的功能。

有关魔术命令的更多信息,请查看此 official reference

是的,%pip 将在大多数边缘情况下正确解析适当的虚拟环境(当前内核使用的虚拟环境),而 !pip 不会,您可能最终会安装软件包在不正确的位置。

部分参考资料: