延迟默认参数将被读取,直到调用函数为止



我有函数和变量分布在多个文件上,并且试图不创建导入网络。

在一个文件中包含一个函数。在另一个变量以及这些函数的应用(总计2个文件(中。

函数的应用需要功能(显然(,但功能需要变量。

我希望能够做以下操作。

[编辑:我想在定义函数后定义变量]

def function(arg1, arg2 = a):
    return arg1 + arg2
a = 5
function(4)

我想要的输出是9。但是,它取而代之的是一个错误,抱怨a没有定义(它不超过该函数,因此无法读取变量(。

我希望该功能仅在运行该功能后才尝试找到变量。我对装饰者一无所知,但我认为这可能是这样做的一种方式。

如果我做

之类的事情
def function_1(a):
    def function_2(arg1, arg2 = a):
        return arg1 + arg2
a = 5

那么它不会抱怨,但是我现在需要打电话给function_1运行function_2

如果有人可以指向正确的方向或告诉我我在做什么,那将是非常感谢的。

使用 None

def function(arg1, arg2=None):
    if arg2 is None:
        arg2 = a
    return arg1 + arg2
a = 5
function(4)

也就是说,使用像a这样的全局影响功能结果可能不是最佳方法。全球群体使代码难以推断,并且很难测试。

最新更新