Почему при 1 варианте код работает как мне нужно, а во втором возвращает None?

from random import *
l=[8,6,8,566,'»']

#1 вариант
shuffle(l)
print(l)

#2 вариант
print(shuffle(l))

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

Автор решения: Пушистик

Потому, что функция shuffle просто перемешивает значения списка, но не возвращает его. Пользуйтесь первым вариантом.

→ Ссылка
Автор решения: CrazyElf

Как уже объяснили, shuffle возвращает None. Но если очень хочется написать код в одну строчку можно использовать например такой трюк:

print(shuffle(l) or l)

None в логическом выражении будет считаться как False, поэтому значением выражения shuffle(l) or l будет часть после or, то есть l, причём взято оно будет уже после выполнения вызова shuffle(l). Таким образом можно в одной конструкции и вызвать shuffle(l) и получить значение l для печати.

→ Ссылка