内联评估输入函数,以便将输入或占位符附加到列表

时间:2018-09-15 23:58:29

标签: python

我在使用Python内联函数很有趣,想知道这是否有可能。

我正在使用click模块,并且正在使用其提示功能,并将输入的值添加到列表中。但是,如果在提示中未输入任何内容,我想添加“ **空**”。现在,“点击”具有默认值,但我不会在其中输入默认值,因为这时提示符将显示“名称[**空**]”而不是“名称[]”。

所以我想到的就是这个。如果提示返回“”(空),则应附加“ **空**”。我觉得我快要拥有了。但这只是运行代码的结尾,而是将一个空的''项目附加到列表中。不是我的文字''**空**'。

所以代码看起来像这样:

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

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

2 个答案:

答案 0 :(得分:1)

这将起作用:

int

您的表情是

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 **') 始终为true,因为not ''始终为false。因此,您总是要附加用户输入的字符串,包括空字符串。

答案 1 :(得分:0)

@Ned的解决方案是最好的:

[] -> {3: []} -> {2: {3: []}} -> {1: {2: {3: []}}}

或者做一些与您做的事情类似的事情:

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

当然也可以,(但是运行c=click.prompt("Name", default = '') item.append(c if c else '** empty **') 两次,所以最好只运行一次):

click.prompt("Name", default = '')