Python 赋值函数,忽略第一个值

Python 赋值函数,忽略第一个值,python,python-2.7,Python,Python 2.7,首先让我说我不认为它是复制品。我已经查过了。这不是我需要的 我有一个函数f: def f(parameters): return a,b # returns two values 在module1.py中定义。现在,我想让另一个类知道这个函数,所以我这样做: import module1 Class MyClass: def __init__(self): self.function = module1.f 当然,这发生在module2.py中。我需要在另

首先让我说我不认为它是复制品。我已经查过了。这不是我需要的

我有一个函数f:

def f(parameters):
    return a,b # returns two values
module1.py
中定义。现在,我想让另一个类知道这个函数,所以我这样做:

import module1

Class MyClass:

    def __init__(self):
        self.function = module1.f
当然,这发生在
module2.py
中。我需要在另一个模块中调用它,
module3.py
像这样:

import module2

instance = module2.MyClass()

otherFunction(args, instance.function  )
问题是:
otherFunction
的第二个参数必须是一个返回单个值的函数(目前,它返回两个值)。我试过了

但这是行不通的。有什么想法吗?我无法更改
模块3.py
。我可以改变其他的,但是我必须对我的项目做一系列的改变,这似乎是非常痛苦的。
我使用Python2.6。如果您找到的任何解决方案也适用于python3,我将非常高兴。

您可以尝试使用装饰器:

def mydecorator(f):
    def w(*args, **kwargs):
        r = f(*args, **kwargs)
        return r[0]
    return w

@mydecorator
def f(a, b):
    return a + 2, b + 3 # returns two values

print f(1, 2) # 3

创建环绕
f
的lambda:

Class MyClass:

    def __init__(self):
        self.function = lambda parameters: module1.f(parameters)[0]

如果需要接受任意函数,则可以使用lambdas或包装函数:

self.function = lambda *args: module1.f(*args)[0]

否则,请查看@Christian的答案。

好的,这可能是一个愚蠢的问题:

module1.py
中,我执行以下操作:

def f(parameters):
    retrun a,b # returns two values

def ff(parameters):
    a, b = f(parameters)
    return a
并使用
ff
代替
f

def f(parameters):
    retrun a,b # returns two values

def ff(parameters):
    a, b = f(parameters)
    return a