gpt4 book ai didi

Python 闭包和替换周围范围

转载 作者:行者123 更新时间:2023-11-28 19:58:31 24 4
gpt4 key购买 nike

我知道在使用 Groovy 闭包时,我可以更改闭包上的 delegate,这样在闭包内进行的函数调用就可以在外部定义。

我可以用 Python 做类似的事情吗?

具体来说,如果您采用以下代码:

def configure():
build()

def wrap(function):
def build():
print 'build'

function()

wrap(configure)

我希望它打印“构建”(仅对 wrap() 进行更改)。

一些注意事项:

我不想将函数传递给configure(),因为configure() 可能会调用大量函数。

我也不想全局定义那些,因为,再一次,可能有大量的函数可以被 configure() 调用,我不想污染全局命名空间。

最佳答案

这样做是否是一种好方法值得商榷,但这里有一个不修改全局命名空间的解决方案。

def configure():
build()

def wrap(f):
import new
def build():
print 'build'

new.function(f.func_code, locals(), f.func_name, f.func_defaults, f.func_closure)()

wrap(configure)

我在 How to modify the local namespace in python 找到了它

关于Python 闭包和替换周围范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8826180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com