如何简化具有相同目的的多个功能

时间:2016-06-22 15:07:23

标签: python function python-3.x

假设我有几个函数基本上做同样的事情,但是在一组不同的变量上。我想到这样的事情:

def changex():
    if x:
        # do procedure1 with x as variable
    else:
        # do procedure2 with x as variable

def changey():
    if y:
        # do procedure1 with y as variable
    else:
        # do procedure2 with y as variable

def changez():
    ...

如何简化这组函数,这样我只需编写一次函数,但它可以完成所有变量的工作?我已经看过我认为可以完成工作的装饰器,但是我无法弄清楚如何使它适用于我的目的。

2 个答案:

答案 0 :(得分:3)

函数可以接受变量作为参数 像这样:

def change(p):
    if p:
         # do procedure1 with p as variable
    else:
         # do procedure2 with p as variable

然后changex()变为change(x); changey()变为change(y)等。

答案 1 :(得分:1)

装饰器对于你想要做的事情来说太复杂了。函数可以接受参数,因此您可以使用以下函数传递您想要执行的变量:

def change(var):
    if var:
        procedure1(var)
    else:
        procedure2(var)

请注意,我使用if/else而不是使用if检查这两个条件。我还建议不要对True/False进行明确测试。但是,如果必须这样做,则最好使用is代替==,因为TrueFalse是Python中的单个对象:if x is True优于if x == True