在Python

时间:2015-08-24 19:49:48

标签: python try-except

Python开发人员说比请求更容易请求宽恕。每次我都能在脚本中遵循这个想法。但是,我已经到达了我不知道如何正确做到这一点的情况。

假设您有一个对象数据库,您需要对这些对象执行操作。当从数据库获取对象时,可能会发生该对象不存在,因此我决定在那里创建它。进一步假设在数据库中创建对象的方法不返回创建的对象。我遇到的问题是我正在重复获取对象的代码:

try:
    obj = get_obj(name="foo")
except DoesNotExists:
    create_obj(name="foo")
    obj = get_obj(name="foo")
do_stuff(obj)

有没有办法避免重复代码?

1 个答案:

答案 0 :(得分:2)

不要直接调用get_obj(),而是创建一个名为get_or_create_obj()的辅助函数。

如果指定的对象已存在,则返回该函数,否则创建它然后返回它。

如果您关心是否找到或创建了该对象,该函数可以返回(created_flag,object)的元组。

你的get_or_create_obj()仍然有代码重复,但只在一个地方。