Рассматривает выражение справа от себя в логическом контексте (bool) и False превращает в True, а True в False.
print( not True ) # False
print( not False ) # True Если функция в своем аргументе ожидает список, и нужно чтобы список обязательно был заполнен... можно проверять:
def func(arr):
if not arr:
print('Пустой список!')
return
#...
print(arr)
func([])
func([1, 2, 3]) Потому что пустой [] в логическом контексте будет False, а not [] даст True и условие выполнится.