如果我有一个返回一堆东西的函数,我只想抓住它返回的一个东西并丢弃其余的东西,而不必先分配它然后删除它。在使用大型数据集时,我试图节省内存。
def function(a, b)
return a, b
x, _ = function(A, B)
可以这样做吗?
答案 0 :(得分:4)
你可以做
def function(a, b):
return a, b
x = function(A, B)[0]
中间元组的引用计数器应为零,因此将其删除。
答案 1 :(得分:0)
您的代码将运行并产生您期望的值:x
将被分配A
中的值。但是,在Python中,_
是有效的变量名,因此您还要创建一个名为_
的变量,并在B
中为其赋值。似乎只希望将第一个值分配给变量,因此这可能对您不利。请注意,将代码更改为:
x = function(A, B)
这将意味着x
等于(A, B)
,这也不是您想要的。
因此,您需要问自己的问题是:为什么此方法返回两个值,为什么我丢弃其中一个?如果这是您编写的方法,那么将功能拆分为单独的方法也许很有意义,这样可以避免“浪费”返回的值,或者您实际上需要第二个值,而您并没有想到那么远。当然,如果此方法实际上不是您的方法,那么这很重要,在这种情况下,使用_
作为占位符可能是您的最佳选择。