【发布时间】:2013-02-22 20:41:04
【问题描述】:
这似乎是一件很奇怪的事情,但我很好奇是否可以在 Python 中将变量隐式传递到调用链中而不将其作为参数传递。为了更好地说明这里是一个例子:
这里是“正常”的方式:
def three(something):
print(something)
def two(something):
# ...
three(something)
def one(something):
# ...
two(something)
这就是我想要做的:
def three():
# something is defined implicitly
print(something)
def two():
# ...
three()
def one(something):
# somehow define something inside a context
# for this activation
two()
为此,one、two 和 three 不在同一类甚至同一模块中。
【问题讨论】:
-
如果它们不在同一个类或模块中,如何保证在调用
three时会定义一个something? -
什么都没有。这是一个非常糟糕的 hack,但我仍然希望它能够工作。
-
所以您正在寻找一个不存在的问题的解决方案?如果您提供一些上下文可能会有所帮助。
-
你关心线程的情况吗?如果没有,那么调用堆栈永远不应该被中断——那么全局变量如何不够呢?如果线程是一个问题,那么为什么不输入全局变量呢?在某种程度上,必须采取明确的行动来支持您的要求 - 您是在寻找语言功能还是某种框架/使用魔法语言功能就足以满足您的要求?
标签: python