【问题标题】:what is the preferable way to pass argument from function to function?将参数从函数传递到函数的最佳方法是什么?
【发布时间】:2012-05-10 05:44:50
【问题描述】:

我正在创建一个 function(),但是这个 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

结果相同,但对于更复杂的编程案例,哪个工作流程更可取?为什么?

【问题讨论】:

  • 这个问题没有明确的答案。这在很大程度上取决于实际情况。您应该始终采用最易读的方法(当然要保留并且通常考虑更重要的其他设计方面)。换句话说,如果你离开你的代码并在一年后回到它,那么哪个流程最有意义? (或者如果另一个程序员遇到它。)
  • @Corbin 感谢 cmets,实际上我是要使用代码的人,没有其他人。好吧,我会考虑“可读”的东西。只是有时作为新手,当我从头开始构建一些东西时,有一些问题直到代码变得更大才可见,而噩梦后来在某个时候我发现我必须重新做任何事情 - 回去开始只是因为我发现我选择了“错误”的工作流程。非常感谢 cmets。
  • 稍微详细一点,通常函数的目的将决定它应该如何使用和调用,而不是“工作流程”。您通常希望函数具有 1 个职责。这通常会帮助您确定必须设计您的功能以及它们如何交互。

标签: function logic argument-passing flow


【解决方案1】:

答案还应该取决于(潜在的)重用:是否有可能,例如,myotherfunc 将来会用三个以上的参数调用?如果是这样,请选择选项 2。

【讨论】:

  • 嗨,谢谢 Alexander,这是有道理的,我也认为 #2 更容易调试,我的意思是如果我需要传递很多参数,那么 #2 更干净或更少打字。因为我需要的只是调用'myfunc(xx)',无论有多少参数需要传递给myotherfunc,比如myotherfunc(a,b,c,......,z)。与选项#1 相比,如果您想将许多参数传递给 myotherfunc() 那么它还需要传递给 myfunc() 定义,例如: def myfunc(a,b,c ,... , z): out=myotherfunc( a,b,c,.... z)+val。我个人喜欢流程#2,因为它“更干净”。
猜你喜欢
  • 2018-06-09
  • 2022-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-07
  • 2021-03-28
  • 1970-01-01
  • 2021-07-14
相关资源
最近更新 更多