我有一个项目,其中包含许多共享某些常用功能的脚本。我正在尝试将这些共享功能拆分为一个通用脚本,然后将其导入每个单独的脚本中。
文件夹结构类似;
root
|__common
| |__core.py # shared functions
|
|__task1
| |____script1.py # imports core
|
|__task2
|____script2.py # imports core
假设我们有一个共享函数,需要如下所示的3个参数;
def test_function(constant1, constant2, text_string):
# do initialisation with constants generated in script1.py
return parsed text_string
现在,当我在script1.py中调用test_function
时,我需要调用test_function(constant1, constant2, text_string)
好,一切正常。
我的问题是在constant1
中设置了constant2
和script1.py
且从不更改 AND 我需要不断重复拨打电话(这是一种记录方式)
test_function(text_string)
而不是全部3个
参数(每个test_function(constant1, constant2, text_string)
时间)?希望如此,谢谢。
答案 0 :(得分:0)
直接的解决方案是使用包装函数:
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
够好吗?如果没有,我们可以使用装饰器来更改原始图像。
def tf_wrapper(text_string):
return test_function(constant1, constant2, text_string)
答案 1 :(得分:0)
您可以使用functools.partial
在script1
中分配函数的本地版本:
import functools
from core import test_function
...
local_test_function = functools.partial(test_function, constant1, constant2)
local_test_function(text_string)
从文档中
partial()用于“冻结”的部分功能应用程序 函数参数和/或关键字的某些部分导致 具有简化签名的新对象。