Я экспериментировал со свойствами списков, выполняя упражнения Python для объектов наследования и классов. Я понял, что list([1,2,3])
допустим, поскольку сам список является итеративным, но что-то вроде list(1)
вернет ошибку. Разве один объект сам по себе не является итеративным? Однако строка с несколькими символами, например list («это список»), не возвращает ошибку, что еще больше усугубляет путаницу (допустим, строка - это один объект). Почему это так?
from cpython/listobject.c (starting line 2675)
/*[clinic input]
list.__init__
iterable: object(c_default="NULL") = ()
/
Built-in mutable sequence.
If no argument is given, the constructor creates a new empty list.
The argument must be an iterable if specified.
[clinic start generated code]*/
Я посмотрел исходный код класса списка на https://github.com/python/cpython/blob/master/Objects/listobject.c, и кажется, что строка 2675-2721 может иметь ответ, который я ищу, но как новичок, мне нужен кто-то, чтобы объяснить процесс создания списка для меня.