尝试在 Python 中创建异常

Try and create on exception in Python

Python 开发人员说 请求宽恕比请求许可更容易。每次我都可以在我的脚本中遵循这个想法。但是,我遇到了不知道如何正确执行此操作的情况。

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

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

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

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

此函数 returns 指定的对象,如果它已经存在,否则创建它然后 returns 它。

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

您的 get_or_create_obj() 仍然有代码重复,但只有一处。