Перенести полученные элементы из функции в новый объект

Marina10

Новичок
Пользователь
Апр 29, 2020
12
0
1
У меня есть функция
def present_or_not(tokens):
list_misspelled = []
for item in tokens:
if bloomf.check(item):
continue
else:
list_misspelled.append(item)
print(list_misspelled)
#misspelled_words = present_or_not(tokens)
print(list_misspelled)

которая выводит список неправильно написанных слов list_misspelled. Я хотела бы создать новый объект вне функции и присвоить ему значение вывода функции, т е misspelled_words = present_or_not(tokens) для того чтобы была возможность дальше итерировать его. Но при дальнейшей работе с этим объектом выводить ошибка 'NoneType' object is not iterable . Как можно решить эту проблему?
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
Писать не print(list_misspelled), а return list_misspelled.
Принт печатает. Ретерн возвращает.
 
  • Мне нравится
Реакции: Marina10

Ketovx

Новичок
Пользователь
Авг 1, 2020
9
2
3
23
RF, KZN
Если вы пишете в современной IDE на подобии PyCharm, то вам сильно могли бы помочь typehints (определения типа переменных и функций)!
Попробуйте изменить вашу функцию таким образом:

Python:
def present_or_not(tokens: list) -> list:
    list_misspelled = []
    for token in tokens:
        if bloomf.check(token):
            continue
        else:
            list_misspelled.append(token)
    print(list_misspelled)

Ваша IDE подсветит ошибку в конструкции функции, ведь теперь ваша функция обещает вернуть тип list, но не возвращает ничего!
Если же вы хотите вернуть ваш список list_misspelled в то место, где вызывается ваша функция, то вам необходимо добавить ключевое слово return в конец функции и указать переменные, которые вы хотите возвращать, например:

Python:
def toLowerCase(text: str) -> str:
    lower_text: str = text.lower()
    return lower_text
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
но не возвращает ничего!
*возвращает None, точнее.
 

Форум IT Специалистов