首页 > 解决方案 > 避免在导入的函数调用中传递(相同重复的)参数

问题描述

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

文件夹结构类似于;

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

现在,当我调用test_functionscript1.py 时,我需要调用test_function(constant1, constant2, text_string)

很好,一切正常。。

我的问题是constant1并且constant2已经设置script1.py并且永远不会改变并且我需要不断地重复调用(这是一种日志记录)。

希望这是有道理的,谢谢。

标签: pythonfunctionoopimportmodule

解决方案


您可以使用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()用于部分函数应用程序,它“冻结”函数参数和/或关键字的某些部分,从而生成具有简化签名的新对象。


推荐阅读