Python 错误“赋值前引用的局部变量“born”

Python 错误“赋值前引用的局部变量“born”,python,Python,如果您得到了这个错误,这仅仅意味着您调用或试图分配一个不存在的变量 要解决此问题,请在函数定义之前添加born= 作为一种很好的检查方法,您可以给born变量一个默认赋值,就像出了问题一样。或0。然后在函数完成执行之前打印出变量。如果卡在那里,那么您知道问题出在try/excepts中 在for row in rows循环中指定born变量。问题是可能没有行,因此没有天生的赋值 在此循环之前放置born=False。当代码执行最后一行之前的行时:singer\u band\u info\u d=

如果您得到了这个错误,这仅仅意味着您调用或试图分配一个不存在的变量

要解决此问题,请在函数定义之前添加born=

作为一种很好的检查方法,您可以给born变量一个默认赋值,就像出了问题一样。或0。然后在函数完成执行之前打印出变量。如果卡在那里,那么您知道问题出在try/excepts中

在for row in rows循环中指定born变量。问题是可能没有行,因此没有天生的赋值


在此循环之前放置born=False。

当代码执行最后一行之前的行时:singer\u band\u info\u d=dicturl=url,genres=genres,born=born,ya=ya变量born可能尚未初始化,因为您只在一个if案例中处理初始化。没有理由否决这个非常好的问题。您可以添加有关出现错误的特定行的信息
def singers_band_info(url, pagetext):
    get_soup = lambda page:BeautifulSoup(page, 'html.parser')
    get_rows = lambda soup:soup.find_all("tr")
    get_cols = lambda row:row.find_all("th") + row.find_all("td")
    get_colstd = lambda row:row.find_all("td")
    rows = get_rows(get_soup(pagetext))
    for row in rows:
        cols = get_cols(row)
        colstd = get_colstd(row)
        if cols[0].get_text() == "Born":
            try:
                born = colstd[0].get_text()
                born = born[1:11]
            except:
                born = "False"
        if cols[0].get_text() == "Years active":
            try:
                ya = colstd[0].get_text()
            except:
                ya = "False"
        if cols[0].get_text() == "Genres":
            try:
                genres = colstd[0].get_text()
            except:
                genres = "False"
    singer_band_info_d = dict(url = url, genres = genres, born = born, ya = ya)
    return singer_band_info_d