python3中使用局部变量的类闭包

2024-09-30 05:27:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我觉得这篇文章很有趣 http://okmij.org/ftp/Scheme/oop-in-fp.txt

所以我试着编写一个类似闭包的类(只是一个玩具),用Python实现如下:

def clos(x,y):
    def getx():
        print(x)
    def gety():
        print(y)
    def setx(i):
        nonlocal x
        x = i
    def sety(i):
        nonlocal y
        y = i
    lc = locals()
    return lambda x,*y:lc[x](*y)

k=clos(1,2)
k("getx")
k("gety")
k("setx",2)
k("getx")

不过,我觉得lc = locals()看起来很笨重。但是我不能在下面的句子中使用return lambda x,*y:locals()[x](*y),因为它将构建一个不同的环境。你知道吗

有什么办法让它看起来更简单吗?你知道吗


Tags: lambdaorghttpreturndeflcprint篇文章

热门问题