python - 是否有任何替代方法来检查特定索引的值是否在 python 列表中为空
问题描述
def fn():
return {'Name': 'John'}, False #, {'extra': 'welcome', 'to': 'dev@dsds.com'}
results, *returns = fn()
is_multiple = returns[0] if len(returns) > 0 else False
extra_params = returns[1] if len(returns) > 1 else None
print(is_multiple)
print(extra_params)
检查是否为空的任何其他替代方法extra_params
?
除了上述len
解决方案或不使用try
catchIndexError
异常处理程序..
解决方案
更好的解决方案是将函数返回的值定义为三值元组,如果没有值,则使用None
或为空,例如:dict
def fn():
return {'Name': 'John'}, False, None
results, is_multiple, extra_params = fn()
这要简单得多,并且避免了检查长度的需要。
例如,如果您正在编写向后兼容的代码,另一种方法是不预先进行元组解包,例如:
def fn():
return {'Name': 'John'}, False, # {}
response = fn()
# At least two items must be returned else length might not be valid.
if len(response) == 2:
results, is_multiple = response
extra_params = None
elif len(response) == 3:
results, is_multiple, extra_params = response
else:
raise ValueError("Unexpected response...")
虽然我会推荐第一个更简单的设计,但有很多方法会搞乱第二个设计并导致意外错误。
推荐阅读
- ios - 如何在 UIView 中定位和动画子视图?
- flutter - 将地图项读入类成员
- machine-learning - CNN网络,继续使用conv2d,不使用maxpool,看keras书的一个问题
- python - 将一个 dask 数据帧包写入磁盘(使用 dask 和 featuretools 生成 200 万个特征)
- vuejs2 - 带有笑话的Vue Cli单元测试如何运行单个测试
- django - 从视图中保存查询时出现不完整错误
- json - 为什么隐式读取找不到我的对象类型scala
- sql - 在“_”第三次出现后返回文本
- elasticsearch - 仅查询 _Source 文档中的键(跳过值)
- xamarin.forms - 如何使用 xamarin 表单在 android 9 中获取活动的 Wifi 网络运营商名称