代码之家  ›  专栏  ›  技术社区  ›  Daniel Roseman

将比较运算符映射到函数调用

  •  8
  • Daniel Roseman  · 技术社区  · 16 年前

    我正在用Python构建一个用于表单验证的DSL,其中一个要求是能够指定一个字段应该大于或小于一个常量或另一个字段值。因此,我试图轻松地映射运算符,如 < > , <= >= 它们在 operator 模块,以便在字段验证期间调用它们。

    我意识到我可以创建一个字典来将操作符映射到函数,但是有更好的方法吗?有没有办法访问Python的内置映射?

    2 回复  |  直到 16 年前
        1
  •  5
  •   jchl    16 年前

    据我所知,没有内置字典映射字符串 ">" 到函数 operator.lt 等等。

    正如其他人所指出的,Python解释器本身并不使用这样的字典,因为解析和执行Python代码的过程将首先翻译字符序列“>表示该运算符的令牌,然后将其转换为字节码,执行该字节码的结果将执行 __lt__ 方法,而不是通过 操作员.lt

        2
  •  3
  •   Ned Batchelder    16 年前

    Python的内部映射“<”到 __lt__ (等等)不会在标准库中的任何位置公开。有很多关于Python的内部构件没有作为工具箱公开。一般来说,我甚至不确定如何创建这样一个映射。映射到什么 __getitem__ ?