python - 内联评估输入函数,以便将输入或占位符附加到列表
问题描述
我对 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 **' 附加到列表中。它只是行不通。如前所述,它附加了''。
解决方案
这将起作用:
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 ''
总是真的,因为''
总是假的。所以你总是附加用户输入的字符串,包括空字符串。
推荐阅读
- c# - 在我们仅存储图像名称的数据库表中如何在gridview中显示图像。如果它在文件夹中,如何提供 imgae 路径。图片
- d3.js - 使用 JSON - D3 布局包时 X 和 Y 为 NaN
- java - UnityException:找不到合适的 JDK 安装
- java - 在 Spring 中的 @Transactional 方法期间处理异常
- kubernetes - Kubernetes Kubectl exec 是如何工作的以及如何解决它
- android - SearchView 触发 SearchActivity 的两个 Intent
- android - 如何在android中为fab实现单页菜单
- angular - Angular 4 - 即时将文本字段值转换为大写
- google-maps - 什么是我可以用于我的项目并适用于 ios 和 android 的最可靠的反应原生地图库
- java - 如何解决 JLS3 无法解决或不是 Eclipse 中的字段错误?