python - 返回 None 或元组并解包

标签 python return-value

我总是对这个事实感到恼火:

$ cat foo.py
def foo(flag):
    if flag:
        return (1,2)
    else:
        return None

first, second = foo(True)
first, second = foo(False)

$ python foo.py
Traceback (most recent call last):
  File "foo.py", line 8, in <module>
    first, second = foo(False)
TypeError: 'NoneType' object is not iterable

事实是,为了顺利解压,我必须捕获 TypeError 或拥有类似的东西

values = foo(False)
if values is not None:
    first, second = values

这有点烦人。是否有改善这种情况的技巧(例如,在没有 foo 返回 (None, None) 的情况下将 first 和 second 都设置为 None )或关于我提出的案例的最佳设计策略的建议? *变量可能吗?

最佳答案

好吧,你可以这样做......

first,second = foo(True) or (None,None)
first,second = foo(False) or (None,None)

但据我所知,没有更简单的方法可以扩展 None 来填充整个元组。

关于python - 返回 None 或元组并解包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1274875/

相关文章:

python - TypeError 异常未被捕获

Python代码处理文本文档时不停顿

python - 更改 matplotlib 中的抗锯齿强度

Java:返回两个 "immutable"整数的最佳方式?

javascript - ASP.NET:如何从弹出窗口获取 JavaScript 变量?

python - 从 python 3.X 中的深层嵌套字典中打印特定键和值

python - “请求”对象没有属性 'json'

python - 使用计算 GCD - Python 函数返回

java - 我需要帮助才能返回

jquery - 从异步函数中向函数返回 true