不返回或元组并解包

发布于 2021-01-29 17:17:34

我总是为这个事实而烦恼:

$ 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)的情况下,将第一个和第二个都设置为None)或针对我所提出的案例提出最佳设计策略的建议?*变量可能吗?

关注者
0
被浏览
52
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    好吧,你可以做…

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

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看