在python函数中不返回内容

在python函数中不返回内容,python,Python,我试图写一个代码来每天监控网站,但我在一个函数的返回中得到了Sutch。当我执行此脚本时,出现错误: NameError Traceback (most recent call last) <ipython-input-1-071caa90924c> in <module> 62 salva_arquivo(url) 63 checa_existe_anterior(url) --->

我试图写一个代码来每天监控网站,但我在一个函数的返回中得到了Sutch。当我执行此脚本时,出现错误:

NameError                                 Traceback (most recent call last)
<ipython-input-1-071caa90924c> in <module>
     62 salva_arquivo(url)
     63 checa_existe_anterior(url)
---> 64 pesquisa_diferenca(conteudo_old,conteudo_new)
     65 
     66 

NameError: name 'conteudo_old' is not defined

您需要将函数的返回值分配给变量,以便可以使用它们调用下一个函数

conteudo_new = salva_arquivo(url)
conteudo_old = checa_existe_anterior(url)
pesquisa_diferenca(conteudo_old,conteudo_new)

您的
checa_existe_previous
函数定义了一个名为
conteudo_old
的函数,但该名称在函数结束时即缩进级别返回到零时过期

您可以在模块/全局范围内创建另一个
conteudo_old
变量实例,如下所示:

conteudo_old = checa_existe_anterior(...)
然后,当您将它传递到
pesquisa\u diferenca
函数时,它就会存在

但是,请注意:您的
checa\u existe\u front
函数中似乎有一个bug

你有:

for files in os.listdir(): 
    if str(files) == str(nomesite_old):
        with open (nomesite_old, mode = 'r') as nomesite:
            conteudo_old = nomesite.read()
    elif conteudo_old == None:
        print('nao encontrei')
return conteudo_old
首先,
for
循环可以运行零次。在这种情况下,
os.listdir
被记录为不返回
成员,因此一个空目录将导致这种情况。当这种情况发生时,
conteudo\u old
从未被设置,因为它被设置的唯一位置是循环内部,而循环从未运行。您将遇到与您描述的错误完全相同的错误

第二,考虑如果第一个文件遇到了<>代码>如果条件:如果尝试打开文件,会发生什么。但是如果文件无法打开(可能是因为权限问题),则

with
语句将自动退出,并且
conteudo\u old
将永远不会初始化。然后您尝试返回它,这将导致与您描述的错误完全相同的错误


最后,请注意,
==None
根据被视为不良做法,应替换为
is None

谢谢。帮了我很多忙。
for files in os.listdir(): 
    if str(files) == str(nomesite_old):
        with open (nomesite_old, mode = 'r') as nomesite:
            conteudo_old = nomesite.read()
    elif conteudo_old == None:
        print('nao encontrei')
return conteudo_old