#python
#python
Вопрос:
def f():
lst = ['a', 'b', 'c']
return lst[1:]
почему, f().append('a') is None == True
хотя f().__class__
это <type 'list'>
и f() == ['b', 'c']
Комментарии:
1. Оцените это:
[].append('a')
Ответ №1:
Потому что append()
возвращает None
, а не объект list. Использовать
l = f()
l.append('a')
...
Комментарии:
1. 1: Для этого требуется ответ типа #StdPython_2. Методы, которые изменяют объект (почти), никогда не возвращают значение.
pop()
является заметным исключением.
Ответ №2:
Потому что append()
изменяет список, но не возвращает его.
Ответ №3:
Попробуйте это:
f() ['a']
Надеюсь, это поможет
Ответ №4:
В этом контексте всегда полезно полностью осознавать разницу между выражениями и командами. В принципе, есть два способа добавить значение x
к списку l
- С помощью команды:
l.append(x)
. Обычно команда не возвращает никакого значения; она выполняет какой-то побочный эффект. - Используя выражение, а именно
l [x]
которое обозначает значение и ничего не делает. Т.е. вы присваиваетеl=l [x]