【发布时间】:2021-11-25 19:10:51
【问题描述】:
jinaj2 中的sameas() 是否严格检查布尔值(真假?)
它与相等测试的工作方式不同,我想知道除了检查布尔值之外它的用例是什么。
"检查一个对象是否指向同一个内存地址..."
https://jinja.palletsprojects.com/en/2.10.x/templates/#sameas
【问题讨论】:
jinaj2 中的sameas() 是否严格检查布尔值(真假?)
它与相等测试的工作方式不同,我想知道除了检查布尔值之外它的用例是什么。
"检查一个对象是否指向同一个内存地址..."
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 中,我从来没有使用过它,所以把它作为一个数据点
【讨论】: