变量存在时,为什么会出现Flake8 F821错误?

时间:2019-02-06 16:33:38

标签: python flake8

我有一个返回变量的函数,以及另一个正在使用它的函数。在我的serializer函数中,尽管flake8即将出现,但变量未定义。

我尝试将其添加为main,并使用global vartox.ini文件放置在与脚本相同的文件夹中,但这都没有注册。 A

有什么建议吗?以下代码块供参考。 ignore = F821是元凶

new_folder

1 个答案:

答案 0 :(得分:1)

第一个问题是createDestination从未定义属性self.new_folder,仅定义了局部变量new_folder。缩进也已关闭,因为无论您是否必须先创建它,都要返回new_folder

def createDestination(self):
    '''
    split the src variable for machine type
    and create a folder with 'Evo' - machine
    '''
    s = src.split('\\')
    new_folder = (dst + '\\Evo ' + s[-1])
    if not os.path.exists(new_folder):
        os.makedirs(new_folder)
    return new_folder  # not self.new_folder

第二,您从未将createDestination的返回值分配给任何名称,因此您可以将其作为参数传递给copyPrograms

def main():
    new_folder = createDestination()
    copyPrograms(new_folder)

名称具有作用域,并且new_folder中名为createDestination的变量与main中的同名变量不同。因此,无需使用相同的名称。 main的以下定义同样适用:

def main():
    d = createDestination()
    copyPrograms(d)

,甚至不需要 命名返回值;您可以直接将其传递为

def main():
    copyPrograms(createDestination())