我是一个相对的python初学者,现在对这门语言相当熟悉,但仍在纠结什么是“python”的问题。我想知道人们对这个问题有什么看法。在
例如,使用以下代码行计算从peewee数据库中提取的每周租赁物业的平均成本:
rental_avg_costperweek = sum([calcCostPerWeek(rental.price, rental.rental_freq) for rental in [LLSRental.select(LLSRental.id == this_id) for this_id in closest_rental_ids]]) \ / len(closest_rental_ids)
它使用嵌套的列表理解,这可能会令人困惑。在
或者,我可以把内心的理解放入一个临时变量中:
^{pr2}$这可能有点简单,但是作为一个EX-C++程序员,我厌恶创建临时变量纯粹是为了可读性,因为它扰乱了命名空间,并潜在地为垃圾收集器做了更多的工作。在
另外,我认为如果读者不理解变量是纯临时的,那么如果有很多这样的变量,可能会使代码更加混乱。在
因此,我倾向于使用第一个选项而不是第二个选项,尽管有“扁平比嵌套更好”的指导……但是,python的老手们怎么看?在
谢谢!
格斯。在
我认为两者都错了。看起来你在做内心的理解,因为你想避免重新计算LLSRental.选择(). 如果你恰当地使用理解,你应该很少需要内在理解,因为你可以嵌套它们,比如
或者别的什么。This is a nice but short post这很好地解释了这一点。在
不管怎样。有点像
^{pr2}$似乎是一种更合适的计算方法。实际上,我创建的对象比您的代码要少,因为我没有无缘无故地列出两个列表,而您的代码为中间计算生成了两个列表,然后将它们丢弃。在
相关问题 更多 >
编程相关推荐