没有声明全局变量,为什么出错。。

代码如下,一直报错 —— UnboundLocalError: local variable 'dian' referenced before assignment
查了一下好像是说全局变量应用的问题,但是我好像并没有声明全局变量呀。这是哪里出差了?求解答

import requests
import re
def gethtml(url):
    try:
        headers={"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
                               "(KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"}
        req=requests.get(url,headers=headers)
        req.raise_for_statues()
        req.encoding=req.apparent_encoding
    except:
        return "error"
    return req.text
def getinfo(html):
    obj = re.compile(r'
  • .*?
    .*?(?P.*?)' r'.*?
    (?P.*?) .*?(?P.*?)'
    r'.*?(?P.*?)人评价', re.S) i = obj.finditer(html) for it in i: dian=it.groupdict() dian['year'] = dian['year'].strip() return dian def main(): url ='https://movie.douban.com/top250' html=gethtml(url) getinfo(html) if __name__ == '__main__': main()
  • img

    dian赋值层级和dian的返回层级都不一样,dian赋值在内层,外层的return dian访问不到dian。你可以在for循环前定义dian = []

    img