首页 > 解决方案 > 内联评估输入函数,以便将输入或占位符附加到列表

问题描述

我对 Python 内联函数很感兴趣,想知道这是否可能。

我正在使用 click 模块,我正在使用它的提示功能,我会将输入的值添加到列表中。但是,如果在提示中没有输入任何内容,我想添加'** empty **'。现在,Click 有一个默认值,但我没有将值放在那里,因为提示将显示“Name [** empty **]”而不是“Name []”。

所以我想做的就是这个。如果提示返回 ''(空),那么它应该附加 '** empty **'。我觉得我几乎拥有它。但它只是运行代码结束,但将一个空的 '' 项目附加到列表中。不是我的带有 ''** empty **' 的文本。

所以代码看起来像这样:

item = []
    item.append(click.prompt("Name", default = '') if not '' else '** empty **')

我查看它的方式 click.prompt() 是一个返回值的函数。如果未输入任何内容,默认 = '' 应该告诉它返回 ''。所以我想要实现的是,如果 click.prompt() 返回 '' 那么它应该将 '** empty **' 附加到列表中。它只是行不通。如前所述,它附加了''。

标签: python

解决方案


这将起作用:

item.append(click.prompt("Name", default='') or '** empty **')

你的表情是

click.prompt("Name", default = '') if not '' else '** empty **'

这与以下内容相同:

if not '':
    item.append(click.prompt("Name", default=''))
else:
    item.append('** empty **')

not ''总是真的,因为''总是假的。所以你总是附加用户输入的字符串,包括空字符串。


推荐阅读