Python函数的参数默认值是从另一个modu导入的

2024-05-16 18:33:54 发布

您现在位置:Python中文网/ 问答频道 /正文

让我们考虑以下示例:

import module

def function(param=module.value):
    pass

将函数参数的默认值设置为从另一个模块导入的标识符是否是一个好做法?我知道这是可行的,但我更关心的是干净的代码方法和可能的问题。我在这里看到了一个潜在的漏洞:从module导入的变量的值在下一个版本中可能是可变的。你觉得怎么样?在


Tags: 模块方法代码import示例paramvaluedef
2条回答

我建议将默认值设置为None,然后在代码中进行编程测试:

import module

def function(param = None):
    if param is None:
        param = module.value

可能是直接赋值(只是复制引用)是不合适的。在

例如,您提到对象的类可以在不同版本之间从不可变更改为可变。如果出现这种情况,则可能需要使用^{}而不是赋值。在

但是,并不是所有的类都有自己的__deepcopy__(),因此复制对象可能会有问题。可能是应该使用原始对象中的值创建一个新对象。在不知道对象的类和要用param做什么的情况下,很难说应该使用什么。在

您可以为您的目的编写wrapper。如果库更改或弃用值,您仍然可以获得相同的值。在

只需编写一个简单的包装器moduleWrapper

def getValue():
    try:
        return module.value
    except:
        return None

或者,您可以设置您想要的默认值,然后可以将此函数设置为param。在

^{pr2}$

这样,如果模块改变了,你仍然可以让你的代码工作。在

相关问题 更多 >