我们应该将可以在O1中获取的变量传递给嵌套函数,还是在每个嵌套函数中调用该函数?

问题描述

以下示例最能说明问题。哪个是标准(A)或(B)?

A)在每个嵌套函数中传递变量
def bar(X,y,n_rows,n_cols):
    # Do stuff....
    return stuff

def foo(X,n_cols):
    stuff = bar(X,n_cols)
    # Do stuff...
    return stuff
B)调用每个嵌套函数中的O(1)函数:
def bar(X,y):
    n_rows = get_number_of_rows(X)  # X.shape[0]
    n_cols = get_number_of_cols(X)  # X.shape[1]
    # Do stuff....
    return stuff

def foo(X,y):
    n_rows = get_number_of_rows(X)  # X.shape[0]
    n_cols = get_number_of_cols(X)  # X.shape[1]
    stuff = bar(X,y)
    # Do stuff...
    return stuff

将行数和列数传递给嵌套函数似乎有些冗长,但另一方面,保持设置变量的效率似乎很低。我甚至不太确定是否可以在恒定时间O(1)中获取行数和列数。我是用Python(实际上使用R)编写的,但我的目标是对这个问题进行足够的概括,使其可以应用于任何语言。

有用的链接:
Are there guidelines on how many parameters a function should accept?(建议将此对象设为避免使用多个参数的对象)

问题:
  1. 哪种可读性更好?
  2. 哪个表现更好?
  3. 我们应该以这种情况永远不会发生的方式进行编码吗?
  4. 不同语言的(1)和(2)答案是否会不同?

P.S。在命名此问题时需要一些帮助-不太冗长,更通用。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)