避免在导入的函数调用中传递(相同重复的)参数

时间:2019-12-09 22:24:07

标签: python function oop import module

我有一个项目,其中包含许多共享某些常用功能的脚本。我正在尝试将这些共享功能拆分为一个通用脚本,然后将其导入每个单独的脚本中。

文件夹结构类似;

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中设置了constant2script1.py且从不更改 AND 我需要不断重复拨打电话(这是一种记录方式)

  • 所以我的问题是我该怎么做,所以我只需要打电话 使用script1.py中的test_function(text_string)而不是全部3个 参数(每个test_function(constant1, constant2, text_string) 时间)?

希望如此,谢谢。

2 个答案:

答案 0 :(得分:0)

直接的解决方案是使用包装函数:

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

够好吗?如果没有,我们可以使用装饰器来更改原始图像。

def tf_wrapper(text_string):
    return test_function(constant1, constant2, text_string)

答案 1 :(得分:0)

您可以使用functools.partialscript1中分配函数的本地版本:

import functools
from core import test_function
...
local_test_function = functools.partial(test_function, constant1, constant2)

local_test_function(text_string)

从文档中

  

partial()用于“冻结”的部分功能应用程序   函数参数和/或关键字的某些部分导致   具有简化签名的新对象。