gpt4 book ai didi

python - 在 Python 中添加到本地命名空间?

转载 作者:太空狗 更新时间:2023-10-30 02:50:39 24 4
gpt4 key购买 nike

在 Python 中有没有一种方法可以通过调用函数来添加到本地 namespace ,而无需在本地显式分配变量?

例如以下内容(这当然不起作用,因为 locals() 返回本地 namespace 的副本),其中 print 语句将打印“1”。

def A():
B(locals())
print x

def B(d):
d['x'] = 1

最佳答案

在 Python 2.* 中,您可以通过使用 exec '' 启动您的函数来禁用 Python 编译器执行的关于局部变量访问的正常优化;这会使函数变慢很多(我今天早些时候刚刚发布了一个答案,显示了局部变量优化如何轻松地将代码速度提高 3 或 4 倍),但它会让你想要的 hack 工作。即,在 Python 2.* 中:

def A():
exec ''
B(locals())
print x

def B(d):
d['x'] = 1

A()

将根据需要发出 1

此 hack 在 Python 3.* 中被禁用(其中 exec 只是一个函数,不再是语句或关键字)——编译器现在执行无条件地优化局部变量,因此不再有任何方法可以解决它并使此类 hack 起作用。

关于python - 在 Python 中添加到本地命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1549201/

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