Ansible:将字典作为函数参数传递
Ansible: passing a dictionary as a function argument
我有以下构造:
lookup(
'template',
'some_template.j2',
template_vars=dict(some_dictionary_1=dict(some_dictionary_2))
)
我想让它更具可读性(对我自己而言),所以我想将这些 =
表达式改写成类似这样的内容:
lookup(
'template',
'some_template.j2',
{
'template_vars': {
'some_dictionary_1': dict(some_dictionary_2)
}
}
)
当然,上面的代码片段是行不通的。
谁能帮助我理解在这种情况下如何摆脱 =
s?谢谢。
我认为你非常接近,区别在于 template_vars
is a python keyword argument (又名“kwarg”)因此需要在 =
语法中,但其余部分是公平的游戏采用字典文字语法
- debug:
msg: >-
lookup(
'template',
'some_template.j2',
template_vars={
'some_dictionary_1': dict(some_dictionary_2)
}
)
尽管如此,如果它真的非常让您烦恼,您可以使用 python 的 **
dict unpacking syntax:
来更加偷偷摸摸
- debug:
msg: >-
lookup(
'template',
'some_template.j2',
**{'template_vars': {
'some_dictionary_1': dict(some_dictionary_2)
}
}
)
但是为了你未来的同事,最好不要那样做:-D
我有以下构造:
lookup(
'template',
'some_template.j2',
template_vars=dict(some_dictionary_1=dict(some_dictionary_2))
)
我想让它更具可读性(对我自己而言),所以我想将这些 =
表达式改写成类似这样的内容:
lookup(
'template',
'some_template.j2',
{
'template_vars': {
'some_dictionary_1': dict(some_dictionary_2)
}
}
)
当然,上面的代码片段是行不通的。
谁能帮助我理解在这种情况下如何摆脱 =
s?谢谢。
我认为你非常接近,区别在于 template_vars
is a python keyword argument (又名“kwarg”)因此需要在 =
语法中,但其余部分是公平的游戏采用字典文字语法
- debug:
msg: >-
lookup(
'template',
'some_template.j2',
template_vars={
'some_dictionary_1': dict(some_dictionary_2)
}
)
尽管如此,如果它真的非常让您烦恼,您可以使用 python 的 **
dict unpacking syntax:
- debug:
msg: >-
lookup(
'template',
'some_template.j2',
**{'template_vars': {
'some_dictionary_1': dict(some_dictionary_2)
}
}
)
但是为了你未来的同事,最好不要那样做:-D