3

假设我想重用一些代码,将其命名为“函数 C”,其用法仅属于“函数 R”的范围。将函数定义嵌套在 R 中,用于将其名称限制在本地范围内(最简单的闭包,如果可以这样调用的话)。函数 C 不应该被返回,有任何副作用,甚至引用它的外部作用域(除了全局和导入的模块)

def R(x):
    def C(y):
        return y

    return C(x)

对于大量 R() 调用,这是否会导致任何性能损失:

def C(x):
    return x

def R(x)
    return C(x)

即使我在全局范围内导入一个模块并在闭包中使用它,两者的时间似乎相同,如果不是第一个变体更快的话。

排除非局部变量的意外使用,是否有任何陷阱使这种闭包的使用变得多余或容易出错?

注意:我知道符合“平面优于嵌套”并且此类结构的可读性可能存在争议,但我的问题是针对可读性以外的其他原因。

4

0 回答 0