我是一个相对的 python 初学者,现在对这种语言相当熟悉,但仍在努力解决什么是“pythonic”而不是什么的问题。我想知道人们对这个问题的想法是什么。
例如,使用这行代码来计算从 peewee 数据库中提取的出租物业每周的平均成本:
Rental_avg_costperweek = sum([calcCostPerWeek(rental.price,rental.rental_freq) 用于出租 [LLSRental.select(LLSRental.id == this_id) for this_id in nearest_rental_ids]]) \ / len(closest_rental_ids)
它使用嵌套列表推导,这可能会造成混淆。
或者,我可以将内部理解粘贴到一个临时变量中:
most_rental_records = [LLSRental.select(LLSRental.id == this_id) for this_id in nearest_rental_ids] Rental_avg_costperweek = sum([calcCostPerWeek(rental.price,rental.rental_freq) 用于在最近租借记录中的租借]) \ / len(closest_rental_ids)
这可能(有点)更容易阅读,但作为一名前 C++ 程序员,我不喜欢纯粹为了可读性而创建临时变量,因为它会使命名空间变得混乱,并可能为垃圾收集器带来更多工作。
另外我认为,如果读者不理解该变量纯粹是暂时的,如果有很多这样的变量,可能会使代码更加混乱。
因此,尽管有“平面比嵌套更好”的指导,我还是倾向于选择第一个选项而不是第二个选项……但是你们蟒蛇老手怎么看?
谢谢!
通用电气