跳至内容

为什么 StrictYAML 需要你在 Python 中定义一个模式 - 一种图灵完备的语言?

StrictYAML 在 Python(即图灵完备)代码中定义模式。例如

Map({"name": Str(), "email": Str()})

而不是

type:       map
mapping:
"name":
    type:      str
    required:  yes
"email":
    type:      str
    required:  yes

这里有一些权衡

在非图灵完备语言(如 YAML)中定义模式使模式编程语言独立,并使其更具潜力被非程序员阅读和理解。

但是,在非图灵完备语言中定义模式也会限制并使某些用例变得不可能或很笨拙。

我遇到的某些用例包括

  • 能够导入 pycountry 的国家列表,并将“country: ”限制为有效的国家名称。
  • 能够实现一个模式,该模式根据我想要的特定日期/时间解析器验证日期/时间标量值。
  • 能够在“第二遍”重新验证文档的各个部分,这些部分使用新数据 - 例如,文档中一部分的列表被限制为来自另一部分的项目。

反驳