为什么`default(None)`并不总是显示为`None`

球童

有没有解释为什么两个逻辑推理debug下面分别输出在Ansible剧本任务"NONE",并"FALSE"和不同时"NONE"

- hosts:  'all'

  tasks:

    - debug:
        msg: '{{ foo | default( None ) | ternary( "TRUE", "FALSE", "NONE" ) }}'

    - debug:
        msg: '{{ bar | ternary( "TRUE", "FALSE", "NONE" ) }}'

  vars:

    bar: '{{ foo | default( None ) }}'

我用[email protected]btw观察到了


[edit @ 2019-10-16]

从@VladimirBotka的答案可以推断,一个人可以说真正的“问题”是None在替代方面不是可传递的。我对的使用default(...)不必要地使事情复杂化,并且示例可以简化为:

- hosts: 'all'
  tasks:
    - debug:
        msg: '{{ None | ternary( "TRUE", "FALSE", "NONE" ) }}'

    - debug:
        msg: '{{ bar | ternary( "TRUE", "FALSE", "NONE" ) }}'

  vars:
    bar: '{{ None }}'

...并仍然产生完全相同的输出。

弗拉基米尔·博特卡
  • foo|default(None) 评估为 null
  • {{ foo|default(None) }} 计算为空字符串 ""

任务

- debug:
    msg: bar is empty string
  when: bar|length == 0

"msg": "bar is empty string"

但是任务

- debug:
    msg: foo is empty string
  when: foo|default(None)|length == 0

失败并显示以下错误:

"... object of type 'NoneType' has no len() ... "

作为三元运算的结果,一个空字符串将选择FALSE,null将选择NONE


笔记

1)请参见省略参数中的注释

2)如果省略了第三个参数,则null空字符串都将三进制中""选择FALSE任务

   - debug:
        msg: "{{ bar|ternary('TRUE', 'FALSE') }}"
    - debug:
        msg: "{{ foo|default(None)|ternary('TRUE', 'FALSE') }}"

"msg": "FALSE"
"msg": "FALSE"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么 fetchall 总是导致“None”?

来自分类Dev

为什么StringField始终为None?

来自分类Dev

为什么[] .append(1)为None

来自分类Dev

xml 文件的根为 NONE 为什么?

来自分类Dev

为什么它在输出中显示 None

来自分类Dev

为什么isDrawerVisible总是显示为false

来自分类Dev

为什么isDrawerVisible总是显示为false

来自分类Dev

django-为什么重定向后,表单显示为“ None”

来自分类Dev

为什么str(None)不是str(None)?

来自分类Dev

为什么`for x in list [None:None]:`工作?

来自分类Dev

为什么Python repl为None打印不同的东西?

来自分类Dev

为什么(不是None)== True评估为True?

来自分类Dev

为什么ajax请求为dom元素的值提交“ none”?

来自分类Dev

为什么Python repl为None打印不同的东西?

来自分类Dev

为什么该函数为 None 对象返回 False

来自分类Dev

为什么 CSS Display none!important 不显示?

来自分类Dev

为什么设计为str(None)的python返回'None'而不是空字符串?

来自分类Dev

QSystemTrayIcon并不总是显示

来自分类Dev

为什么总是将输出显示为1?

来自分类Dev

为什么这也返回None

来自分类Dev

为什么成功的assertEqual并不总是意味着成功的assertItemsEqual?

来自分类Dev

为什么连续前瞻并不总是有效

来自分类Dev

为什么`xmodmap` 并不总是在登录时加载`.Xmodmap`?

来自分类Dev

为什么在工作分配中表达为左手边并不总是有效?

来自分类Dev

在Python中,为什么list(None)错误但[None]不是错误?

来自分类Dev

ListView并不总是显示值

来自分类Dev

为什么“ append('w')”返回None?

来自分类Dev

为什么None在python中最小?

来自分类Dev

Python函数返回None。为什么?

Related 相关文章

热门标签

归档