使用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只有在最初需要标记的情况下才会存在于命名空间中。

这是一种好的做法,还是一种愚蠢的做法,以这种方式努力避免创建变量是过度的,会使代码变得更糟、可读性更低、非Python等。?任何想法都值得赞赏。

这是一种过度渲染,会使代码变得更糟、可读性更低、非Python等。

最新更新