具有默认参数和命名空间的模块函数?

Module functions with default arguments and namespaces?

我想把一些常用的功能收集到一个模块中my_module。这些函数必须具有默认参数,这些参数是工作区中的变量。当我将这些函数从主代码中移出到模块中,然后将它们导入到主代码中时,由于找不到这些默认参数,我得到了一个错误。

y = 1;
def f(x, y=y):
   sum =  x+y
   return sum

f(1)

而当 f 是从 my_module 导入时,我们有

y = 1
from my_module import f

f(1)

如何调整后面的代码使其与第一个代码一样工作?

my_module.py:

y = 1

def f(x, y = None):
    if y is None:
        y = globals()['y']
    sum = x+y
    return sum

test.py

import my_module
my_module.y = 2
f = my_module.f
print(f(1))