почему не добавляется элементы в переменную через .append

есть функция pars которая должна была собирать данные с сайта и класть их в переменную

def pars():
    get_all_attribute = soup.find_all(class_="iva-item-sliderLink-bJ9Pv")
    get_all_price = soup.find_all('span', class_="price-text-E1Y7h")
    for item in get_all_attribute :
        gl_text = (item['title'])
        prod_name.append(gl_text)

соответственно у меня выше есть переменная prod_name = [] , так вот проблема внутри функции выводя в консоль всё нормально выводится и аппендится введите сюда описание изображения а если вызвать принт вне функции то выводится пустой список , я предполагал что дела в скопе но что то не вышло, ниже хочу сложить все элементы в словарь но при вызове кода прилетают пустые списки

class Product():
    def __init__(self, prod_name , price):
        self.prod_name = prod_name
        self.price = price
    def print_product_and_price(self):
        print(f'Товар{self.prod_name} \n цена{self.price}')
        print(price)

list_product.append(Product(
    price = price,
    prod_name = prod_name
    ))




Ответы (1 шт):

Автор решения: Garry Galler

Переделанный на скорую руку код. Никогда не используй глобальных переменных. Глобальными должны быть только константы.

import requests
import json
import string
import re
import lxml
from fake_useragent import UserAgent
from bs4 import BeautifulSoup

ua = UserAgent()
domen = 'https://www.avito.ru/'



def pars(soup):
    
    price = []
    prod_name = []
    
    get_all_attribute = soup.find_all(class_="iva-item-sliderLink-bJ9Pv")
    get_all_price = soup.find_all('span', class_="price-text-E1Y7h")

    # get name  
    
    for item in get_all_attribute :

        gl_text = (item['title'])
        
        prod_name.append(gl_text)
    

    # get price 
    for i in get_all_price:
        gl_price= i.text
        price_done = re.sub(r'[^\d,.]', '', gl_price)
        if price_done == '':
            del()
        else:
            price.append(price_done)
    
    return prod_name, price 
      
class Product():
    def __init__(self, prod_name , price):
        self.prod_name = prod_name
        self.price = price
    
    def print_product_and_price(self):
        print(f'Товар{self.prod_name} \n цена{self.price}')
        

def main():
    with open (r'index.html', encoding='utf-8') as file:
        src = file.read()
    
    soup = BeautifulSoup(src, 'lxml')
    list_product = []
    
    prod_name, price = pars(soup)
    
    list_product.append(Product(
        price = price,
        prod_name = prod_name
    ))
    
    for tovar in list_product:
        tovar.print_product_and_price()
    
    
if __name__ =='__main__':
    main()
→ Ссылка