简化后,我想做这样的事情:
({'publication': obj.pub_name, 'views': obj.views, } for obj = analyze_publication(p) for p in Publication.objects.all())
当然,那是行不通的.
现在,我正在使用:
({'publication': obj.pub_name, 'views': obj.views, } for obj in (analyze_publication(p) for p in Publication.objects.all()))
我不知道第二个代码段是如何完成的,或者是否还有其他语法,或者它效率不高等等.我距离Python只有2周的时间.
解决方法:
您有不平衡的paren,但除此之外,嵌套生成器表达式应该没有任何(功能性)问题.与列表理解一样,它们在嵌套时很快变得笨拙.为了便于阅读,我建议将其移至命名生成器.
如果您对性能感到好奇,请使用disassembler或profilers比较不同的方法.