当前位置: 代码迷 >> python >> 内联评估输入函数,以便将输入或占位符附加到列表
  详细解决方案

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

热度:31   发布时间:2023-06-19 09:27:29.0

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

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

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

所以代码看起来像这样:

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

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

这将起作用:

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 ''总是真的,因为''总是假的。 所以你总是附加用户输入的字符串,包括空字符串。

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

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

或者做一些类似于你所做的事情:

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

或者当然可以,(但运行click.prompt("Name", default = '')两次,所以最好只运行一次):

item.append(click.prompt("Name", default = '') if click.prompt("Name", default = '') else '** empty **')
  相关解决方案