Skip to main content
 首页 » 编程设计

python之更多 Pythonic/Django 风格的方式来编写这个

2025年05月04日28lhb25

有没有更优雅的写法?

    try:  
        author = Author.objects.get \ 
                      (internal_id=line[5]) 
    except:  
        author = Author.objects.get \ 
                      (internal_id=author_mapper[line[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)  

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