python - 避免在导入的函数调用中传递(相同重复的)参数
问题描述
我有一个项目,其中包含许多共享一些常用功能的脚本。我正在尝试将这些共享函数拆分为一个通用脚本,该脚本可以导入到每个单独的脚本中。
文件夹结构类似于;
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_function
script1.py 时,我需要调用test_function(constant1, constant2, text_string)
很好,一切正常。。
我的问题是constant1
并且constant2
已经设置script1.py
并且永远不会改变并且我需要不断地重复调用(这是一种日志记录)。
- 所以我的问题是我怎样才能做到,所以我只需要调用
test_function(text_string)
script1.py 而不是所有 3 个参数(test_function(constant1, constant2, text_string)
每次)?
希望这是有道理的,谢谢。
解决方案
您可以使用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()用于部分函数应用程序,它“冻结”函数参数和/或关键字的某些部分,从而生成具有简化签名的新对象。
推荐阅读
- mongodb - 聚合和分组以从 Mongo db 中的集合中获取最后一行
- python - 从 Perl 调用 Python 脚本
- amazon-web-services - 无法创建 AWS CloudFormation“入门”示例堆栈
- wso2 - 如何使用 WSO2 API Manager 实现 OAuth2 授权
- ios - OHHTTPStubs 单元测试实现
- javascript - Javascript-JQuery | 如何解析 HTML 文本区域并从文本框中输入值?
- swift - 获取当前 Firebase 云消息传递注册令牌错误
- c - 如果声明了 int A[5] 那么只有 A 是指向 A[0] 的指针。这意味着 A 只是一个指针。那么 sizeof(A) 怎么会给出 20 的答案
- dart - 飞镖转换地图
- c# - Optano.Modeling 不适用于 MipCL