假设我有几个函数基本上做同样的事情,但是在一组不同的变量上。我想到这样的事情:
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():
...
如何简化这组函数,这样我只需编写一次函数,但它可以完成所有变量的工作?我已经看过我认为可以完成工作的装饰器,但是我无法弄清楚如何使它适用于我的目的。
答案 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
代替==
,因为True
和False
是Python中的单个对象:if x is True
优于if x == True
。