2012-05-10 91 views
0

我创建一个函数(),但这个FUNC()越来越大,所以我需要把它分解成更小的部分。这里的例证:从函数到函数传递参数的最佳方式是什么?

def myfunc(x,y,z): 
    out=(x*y*z)+ val 
    return out 

a,b,c=1,2,3 
A=myfunc(a,b,c) 
print A 

让说,我想单独(分解)的(X * Y * Z)到另一个这样的功能:

def myotherfunc(x,y,z): 
    return x*y*z 

def myfunc(x,y,z): 
    out=myotherfunc(x,y,z) + val 
    return out 

这是一个简单的故障,但我有另外一个工作流程如下:

def myotherfunc(x,y,z) 
    return x*y*z 

def myfunc(xx): 
    out=xx+val 
    return out 

a,b,c=1,2,3 
A=myfunc(myotherfunc(a,b,c)) 
print A 

同样的结果,但对于更复杂的编程情况下,这是最好的工作流程?为什么?

+0

这个问题并没有一个明确的答案。这将取决于实际情况。您应该始终采用最易读的方法(当然,保留,并且通常考虑更重要的其他设计方面)。换句话说,如果你离开你的代码并在一年后回来,那么最流行的流程是什么? (或者如果另一位程序员遇到它。) – Corbin

+0

@Corbin Thanx的评论,实际上我是谁将要使用的代码,没有人。那么,我会考虑'可读'的东西。它有时候是新手,当我从头开始构建某些东西时,有些问题在代码变得越来越大之前是不可见的,而且在稍后的某个时刻,我发现我必须重新做任何事情 - 回去开始只是因为我发现我选择了'错误'的工作流程。感谢很多评论。 – andio

+0

为了详细说明,通常函数的目的将决定如何使用和调用它,而不是“工作流”。你通常希望一个功能有1个责任。这通常会帮助您确定必须设计您的功能以及它们如何相互作用。 – Corbin

回答

1

答案也应该依赖于(潜在的)重用:这是有可能的,例如,其myotherfunc将在未来三个以上的参数来调用?如果是的话,宁可选择2

+0

嗨感谢名单亚历山大,这是有道理的,我也认为,#2更容易调试,我的意思是,如果我需要通过很多说法,那么,#2是清洁以下输入。因为我需要的仅仅是调用'myfunc(xx)',无论有多少参数需要传递给myotherfunc(myotherfunc,a,b,c,....,z)。比较选项1,如果u想通过许多参数myotherfunc(),那么它也需要传递给MYFUNC()的定义,如: 高清MYFUNC(A,B,C,...,Z):OUT = myotherfunc (a,b,c,... z)+ val。 我个人喜欢流#2因为它是'更清洁'。 – andio

相关问题