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 没有被加载,您会感到惊讶。
我试图寻找文档但找不到(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 没有被加载,您会感到惊讶。