jinja2 模板中相等性测试的 sameas 条件

sameas condition for equality test in jinja2 template

jinaj2 中的 sameas() 是否严格检查布尔值(真,假?)

它与 equal 测试的工作方式不同,我想知道它除了检查布尔值之外还有什么用例。

“检查对象是否指向相同的内存地址...”

https://jinja.palletsprojects.com/en/2.10.x/templates/#sameas

不,它是例如检查,与使用 == 相比,在 python 中使用 == 会调用对象的 __equals__ 方法,该方法可能会被覆盖并因此执行一些意想不到的事情

- debug:
    msg: |
     {%- set a = {"something": True} -%}
     {%- set b = {"something": True} -%}
     equals = {{ a == b }}
     sameas = {{ a is sameas b }}

产量

ok: [localhost] =>
  msg: |-
    equals = True
    sameas = False

我确信它有一些很好的用例,但在我多年的 ansible-ing 中,我从来没有使用过它,所以把它作为一个数据点