Python 3 вывод результата цикла for

Есть цикл

for slug in urls:
newUrl = url.replace('?page=1', slug)
response = requests.get(newUrl)
soup = BeautifulSoup(response.text, 'lxml')
items = soup.find_all('div', class_='col-lg-4 col-md-6 mb-4')
for n, i in enumerate(items, start=n):
    itemName = i.find('h4', class_='card-title').text.strip()
    itemPrice = i.find('h5').text
    res = print(f'{n}:  {itemPrice} за {itemName}')

В последней строке объявил переменную res Все отрабатывает хорошо, но потом хочу еще раз ее вывести путем простого

print(res)

Выдает None, объясните как такое реализуется на питоне, хочу эту переменную использовать например для такой конструкции

with open("items.html", "w+", encoding="utf-8") as file: 
        with redirect_stdout(file):
             print(f'{n}:  {itemPrice} за {itemName}')

При таком раскладе выдает последнее значение - например 6: $49.99 за Short Chiffon Dress А должно быть соответственно списком

1:  $24.99 за Short Dress
2:  $29.99 за Patterned Slacks
3:  $49.99 за Short Chiffon Dress
4:  $59.99 за Off-the-shoulder Dress
5:  $24.99 за V-neck Top

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

Автор решения: Zhihar
res = print(f'{n}:  {itemPrice} за {itemName}')

вы переменной res присвоили не значение строки:

 res = f'{n}:  {itemPrice} за {itemName}'

а значение, которое выдает функция print

поскольку функция print не выдает никакого значения (функция не возвращает значений), то переменной res присвоилось значение None

простой пример:

def func1(value)
    res = value * 2
    return res

def func2(value)
    res = value * 2

print(func1(10)) # вернет 20
print(func2(10)) # вернет None
→ Ссылка