Python:使用* constant *闭包强制实现局部作用域

时间:2014-02-08 14:31:07

标签: python namespaces closures lexical-scope

假设我想重用一些代码,将其命名为"功能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)

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

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

注意:我知道符合" Flat优于嵌套"这些结构的可读性可能存在争议,但我的问题主要是针对可读性等原因。

0 个答案:

没有答案