Skip to main content
 首页 » 编程设计

Python:高效调用多个返回函数的子集变量

2025年05月04日11itcoder

我想知道如果我只对它返回的一个(或少于全部)变量感兴趣,我是否可以阻止我的函数完成它的所有例程。

为了阐明,假设我有一个具有(一个元组)多个返回的函数:

def func_123(n): 
    x=n+1 
    y=n+2 
    z=n+3 
    return x,y,z 

如果我只对第三个值感兴趣,我可以这样做:

_,_,three = func_123(0) 

但我想知道它在函数中是如何工作的。

我的函数是否执行了三个计算,然后才选择“放弃”前两个并给我我想要的一个,或者它是否认识到如果它只执行返回值所需的子例程,它可以做更少的工作我想?如果是第一个,有没有办法解决这个问题(当然,除了为每个计算创建函数并放弃一个独特的函数来组织所有子程序)?

请您参考如下方法:

它将计算并返回所有值。例如

def foo(x): 
    return x+1, x+2 

当我调用这个函数时

>>> foo(1) 
(2, 3) 
>>> _, a = foo(1) 
>>> a 
3 
>>> _ 
2 

请注意,_ 是一个完全有效且可用的变量名。它只是按照惯例使用来暗示您不希望使用该变量。

最接近您所描述的是将您的函数编写为生成器。例如

def func_123(n): 
    for i in range(1,4): 
        yield n + i 
 
>>> a = func_123(1) 
>>> next(a) 
2 
>>> next(a) 
3 
>>> next(a) 
4 

通过这种方式,值会被延迟计算和返回,换句话说,只有在需要时才返回。通过这种方式,您可以设计您的函数,使它们按您想要的顺序返回。