【发布时间】:2020-09-05 07:03:57
【问题描述】:
我在 Python 中有一个调用子函数的父函数。我希望能够在父函数中定义一个可从子函数访问的变量, 不必将其作为参数传递。
这是因为子函数签名必须保持稳定才能与大量代码保持兼容性。此外,我的实际用例涉及到可能有数百个函数调用深度的大型调用堆栈,并且通过每个函数调用传递这个单个参数似乎很痛苦。
我想做的是这样的:
def parent():
context = [1]
child(a, b, c)
def child(a, b, c):
# Somehow access the context here, without it being an explicit argument
context = get_context()
context.append[5]
我在这里尝试重新创建的内容类似于React Contexts,但在 Python 中。具体来说,它们的用例与我所追求的相同:
上下文提供了一种通过组件树传递数据的方法,而无需在每个级别手动向下传递道具。
我考虑过使用上下文管理器 (with x),但这实际上并没有提供孩子访问上下文的机制。我也不能在这里使用全局变量或类变量,因为我需要支持多个相互独立发生的调用堆栈。
这在 Python 中是否可能以某种方式实现?
【问题讨论】:
-
如果您不想发送,请将
context保存在全局变量中。此时context是局部变量,你不能从其他函数访问它。
标签: python python-3.x