首页 > 解决方案 > 在其上下文附近定义变量或避免重复分配/初始化之间哪个更好?

问题描述

我的例子来自 Python,但我猜这个概念适用于大多数语言。假设我有以下场景

for element in big_list:
    temp_var=something # This remains constant throughout the iterations
    # Looping clause 

这里,temp_var是循环中必需的常量变量。for但如果它保持不变,我应该在开始循环之前定义它吗?这里有两个相互矛盾的原则

  1. 变量应该以尽可能小的范围定义,以免拥挤命名空间。它是上述做法的一个论据,它也使变量更接近使用上下文。
  2. 但是在循环内部定义需要在每次迭代中重复初始化和分配。或者它是编译器/解释器优化的东西,所以我无论如何都可以视而不见?

标签: loopsfor-loopcode-cleanup

解决方案


由于变量在循环内不会改变,我肯定选择在循环之前定义它。此外,如果变量在退出循环之前未未分配,则原因 1 是无用的,我的意思是,它在循环后将保持活动状态。退出循环后,您可以取消设置变量。所以,我的方法是:

temp_var = something # This remains constant throughout the iterations
for element in big_list:
    # Looping clause
# loop ended
del temp_var # If it's not needed anymore

很抱歉我不会管理python,但我认为这个“代码”很容易理解,并且适用于几乎任何语言。


推荐阅读