yaml - yaml.CLoader 和 yaml.FullLoader 之间的区别

yaml - difference between yaml.CLoader and yaml.FullLoader

我试图寻找文档但找不到(here 中除外,但 FullLoader 没有出现在那里):

下面几行有什么区别?

yaml.load(string_holding_yaml_content, Loader=yaml.CLoader)
yaml.load(string_holding_yaml_content, Loader=yaml.FullLoader)

它们似乎都做得很好,但 CLoader 更快!

谢谢:)

Cloader 用作用 C 编写的扫描器和分词器,而不是 Python,这使得它更快。 FullLoader 曾经是默认值 Loader,当您无法完全控制输入时使用它是不安全的。

如果您的 YAML 文档中没有 !!python... 形式的任何标签,则没有理由使用 FullLoader.

请注意,我上次检查时,这两个加载程序都是针对 YAML 1.1 的,而 YAML 1.2 规范自 2009 年以来就已经出台。还有一些有效的 (1.1) YAML 这些都无法处理,所以不要如果您认为有效的 YAML 没有被加载,您会感到惊讶。