首页 > 解决方案 > 我可以将我的函数参数的默认值设置为另一个函数的值吗

问题描述

在我的 django 项目中,我有一个从 django 模态获取最新报告对象的功能。我的功能如下图

def get_latest_id():
    if something:
       return id
    else:
       return None
def get_report_obj(id=None):
    if not id:
        id = get_latest_id()
    if not id:
        return False
    try:
        report_obj = report.objects.get(id=report_id)
    except report.DoesNotExist:

        return False
    return report_obj

我可以将我的函数参数的默认值设置为另一个函数的值,如下所示

    def get_report_obj(id=get_latest_id()):
        if not id:
            return False
        try:
            report_obj = report.objects.get(id=report_id)
        except report.DoesNotExist:

            return False
        return report_obj

这段代码对我有用。这是一种正确的编码方式吗?请任何人帮助我。

标签: pythondjangofunction

解决方案


你可以这样做:

def get_report_obj(id):
    try:
        report_obj = report.objects.get(id)
        return report_obj
    except report.DoesNotExist:
        return False

当您调用函数get_report_obj时,您将参数作为get_latest_id函数提供,例如:

try:
    get_report_obj(get_latest_id())
except ....:
    ....

通过在 try except 中调用get_report_obj时直接提供 id 作为函数,可以保证参数 id 存在,这使得 if 语句变得多余。


推荐阅读