更多Pythonic/Django-esque的方式来写这个?

AP2*_*257 1 python django

是否有更优雅的方式来写这个?

    try: 
        author = Author.objects.get \
                      (internal_id=line[5])
    except: 
        author = Author.objects.get \
                      (internal_id=author_mapper[line[5]]) 
Run Code Online (Sandbox Code Playgroud)

或者这是最好的吗?

Blu*_*ers 5

author_id = line[5]
try: 
    author = Author.objects.get(internal_id=author_id)
except Author.DoesNotExist: #blank excepts are bad and hide errors.
    author_id = author_mapper[line[5]]
    author = Author.objects.get(internal_id=author_id) 
Run Code Online (Sandbox Code Playgroud)

你的版本对爵士乐来说已经足够了.但是,您应该添加一个显式异常来捕获,因为空白except语句可能相当危险.想象一下使用internal_id=line[5]加注的情况Author.MultipleItemsReturned.你肯定希望这个提升,和/或单独处理它,因为它是一个可能被隐藏的非常不同的问题.好吧,在这种情况下,它可能不会,但只是一般来说,空白excepts不好:)