(蟒蛇)如何使导入的函数自动与全局变量交互?

(Python) How do I make imported functions automatically interact with global variables?

提问人:George 提问时间:7/6/2023 更新时间:7/6/2023 访问量:26

问:

假设我想模仿以下行为:

Databases = ... # 'global' object

def fn(query):
    return query_database(query, Databases)

在本例中,Databases 是一个定义的对象,因此我可以在我的函数中调用它。

现在假设我的函数“fn”和“数据库”在不同的文件中,我将“fn”导入到我的数据库文件中。我可以让它“开箱即用”地复制类似的行为吗?到目前为止,我的尝试如下:

def fn(query, databases = None):
    # databases are in a different file
    return query_database(query, databases)
from fn_module import fn
from toolz import curry # alternatively import partial from functools, but it gives some issues

fn = curry(fn)(databases=Databases) # Now function works as expected

现在,这有效,但是,我有很多函数,对于每个函数来说,这样做都非常乏味,因为我必须整理很多不同的变量。有没有更系统的方法(或者干脆进行全面检修)?

python 全局变量 python-import currying

评论

0赞 kindall 7/6/2023
函数使用定义它们的模块的全局变量(每个模块都有自己的全局变量)。可以改变这一点,但它有点高级的黑客技巧,并不适合生产代码。如果你反过来做,你会有一个更容易的时间:导入到你的模块中,那么它就是模块全局的一部分,可以被其中的函数看到。Databasesfnfn
0赞 George 7/6/2023
我的问题是我必须从几个不同的模块导入函数,因此必须以某种方式处理这个问题
0赞 kindall 7/6/2023
然后改变你的设计,这样你就不必这样做了。

答: 暂无答案