使用globals或locals避免创建很少需要的变量是一个好主意吗?

问题描述

我有一个处理文件夹的脚本。一些文件夹(例如其中的5%)根据其内容分配了特殊状态。我使用变量special = True来存储此状态,以后需要使用if语句进行评估,并且仅对具有此标记文件夹执行额外的操作(其中95% (如果只是跳过操作)。

现在,我了解它的基本方式是:

if xxxx:
    special = True #for these few folders
else:
    special = False #for all other folders
...
if special == True:
    [operation]...

现在我的问题是,为不需要此标记的95%的文件夹不必要地创建了变量;但是,我需要该变量存在(因此即使该值为False也必须创建该变量)才能进行求值,因为否则if语句将引发异常。因此,我改用以下解决方案:

if xxxx:
    special = True #for these few folders
...
if 'special' in globals():
    [operation]...

在这种情况下,在95%的情况下都不会创建不必要的变量,因为变量special仅在首先需要标记的情况下才会存在于命名空间中。

这是一种好习惯还是这种愚蠢的做法,以这种方式避免创建变量的努力是过大的,会使代码彻头彻尾的恶化,可读性差,非Pythonic等?任何想法都值得赞赏。

解决方法

这太过分了,使代码彻头彻尾的恶化,可读性差,非Pythonic等。