变量未定义 NameError: name 'download_page' is not defined

shake  2017-12-16 08:16  ·  51 浏览
def save_content(data_num,data_big,data_all):
 download_page = 100 * data_num * data_big / data_all
if download_page > 100:
    download_page = 100
print "%.2f%%" % download_page

为什么报错 NameError: name 'download_page' is not defined

明明在第二行就定义过了啊 download_page,求解。

1个回答
kingfly 2017-12-16 17:00

python 使用缩进表示语句块,改成下面这样

def save_content(data_num,data_big,data_all):
    download_page = 100 * data_num * data_big / data_all
    if download_page > 100:
        download_page = 100
    print "%.2f%%" % download_page

你请求的 url 响应头里面没有 Content-Length 字段,urllib.urlretrieve(url[, filename[, reporthook[, data]]]) 的第三个参数 reporthook 是一个回调函数,这里就是 save_content 这个函数。

data_all 这个参数对应 Content-Length 的值,由于没有定义,默认为 -1 所以显示负数。