python - 我可以将我的函数参数的默认值设置为另一个函数的值吗
问题描述
在我的 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
这段代码对我有用。这是一种正确的编码方式吗?请任何人帮助我。
解决方案
你可以这样做:
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 语句变得多余。