尝试在 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() 仍然有代码重复,但只有一处。
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() 仍然有代码重复,但只有一处。