【问题标题】:Passing variables over several degrees of separation在多个分离度上传递变量
【发布时间】:2016-10-29 00:47:03
【问题描述】:

(python) 问题在这里,我还没有找到一个好的解决方法。

假设我在源文件 myfunc.py 中有一个布尔标志

# myfunc.py

bool_val = False

# Potentially change flag
if (some_condition_is_met):
    bool_val = True

# Many other function calls down the line
do_other_stuff()

现在,假设“do_other_stuff”调用了一系列其他函数,例如:

do_other_stuff() 调用 func1(),然后调用 func2(),然后调用 func3()嗯>... 最终 importantfunc() 被调用。

现在,“importantfunc”需要知道“bool_val”的值是什么

# importantfunc.py
if bool_val is True:
    do_something()
elif bool_val is False:
    do_something_else()

问题是我的 SW 架构使得将“bool_val”的值向下传递到函数调用的级联是非常不切实际的。

有人对如何解决这个问题有任何想法吗?或者我错过了什么明显的东西?提前致谢。

【问题讨论】:

  • 根据您的情况,您可以将这些函数放在一个类中,将布尔值存储为开头的字段,并在结尾处访问它。
  • 谢谢,Alex,但不幸的是,这些函数需要在单独的源文件中。 (这些函数实际上是更广泛的面向 obj 的架构中的类方法,但为了简化定义问题,我将其保留为简单函数)
  • 是函数内部的初始赋值吗?如果不是,应该是设置了一个全局变量,函数会自动使用这个全局变量。

标签: python global-variables parameter-passing


【解决方案1】:

虽然您遇到的问题会使架构受到质疑,但试试这个:

global bool_val = False

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    相关资源
    最近更新 更多