我试图做一个“奇怪”(但在我的例子中很有用)的函数,它可以返回一个动态列表,其长度取决于接收者的数量。你知道吗
例如:
f()返回一个无的动态列表,因此我可以执行以下操作:
a = f() => a = None
a, b = f() => a=b= None
(a, b) = f() => a=b= None
(a, b, c, d, e, f) = f() => a=b=c=d=e=f= None
我认为这可以通过生成器理解或迭代器来实现,但是我在如何获取receiver的数量上遇到了障碍。也许我走错了方向。你能给我一些建议吗?你知道吗
任何帮助都将不胜感激。你知道吗
非常感谢
铁镇
不幸的是,Python使用Pythonic的“请求原谅比允许更容易”方法来解压返回的元组。也就是说,如果你有一个声明:
在幕后,它在做一些事情:
所以它动态地发现返回的值的数量。不幸的是,这使我们无法聪明地创建一种处理可变回报的新类型:
在Python3中,您可以按自己的要求做一些事情,但负担在调用者身上,而不是被调用的函数。函数应该总是返回相同数量的结果,但是我们将使用extended tuple unpacking捕获剩余的结果,如this StackOverflow question所示。你知道吗
使用这种方法,您可以返回任意多的结果,但在最大情况下,您需要始终至少返回所需的结果。其余的被压缩成一个尾随的元组。你知道吗
如果不介意使用Python 3,可以忽略不需要的内容,例如:
这在Python中是不可能的。右边站点上的函数不知道调用它的上下文。在进行任何名称绑定之前,都会对右侧站点进行求值。你知道吗
相关问题 更多 >
编程相关推荐