• Что такое "типы данных" в Python?

    @kazakovmaksim Автор вопроса
    Сергей Паньков, вот с этим полностью согласен!
  • Что такое "типы данных" в Python?

    @kazakovmaksim Автор вопроса
    Hemul GM,
    в питоне любой тип - класс. В нормальных же языках помимо классов есть примитивные типы (строка, число, вещ. число, символ, и т.д.)

    Да, я именно про это! Про то как это сделано в питоне.
  • Что такое "типы данных" в Python?

    @kazakovmaksim Автор вопроса
    Hemul GM,
    объявление в питоне точно такое же как и в других языках. Просто используется вывод типов

    В питоне всё же не объявление, а связывание.
  • Что такое "типы данных" в Python?

    @kazakovmaksim Автор вопроса
    На сколько могу понять, d в этом примере будет integer только потому что функция возвращает integer. Но map(), range() в Python 3 возвращают свой особый объект, который не является ни списком, ни числом, ни чем-то ещё.
  • Что такое "типы данных" в Python?

    @kazakovmaksim Автор вопроса
    mkone112,
    Тут я уже потерял нить.

    Я имел ввиду, что a = map(int, list_a) создаст в памяти конкретный объект, который будет и не int и не list. А именно map. И для него будут доступны какие-то специфические действия, определенные его классом. т.е. это фактически специальный тип данных.
  • Что такое "типы данных" в Python?

    @kazakovmaksim Автор вопроса
    Hemul GM, в питоне переменные не объявляются. В нём же по другому устроено.
    Есть имя, оно связывается с объектом в памяти. Сначала создается объект в памяти, а затем устанавливается ссылка с именем из пространства имен. То есть, это как-бы и не переменная.
    Возьмем пример:
    a = range(1, 5)
    print(a) выдаст "range(1, 5)"
    print(type(a)) выдаст:
    <class 'range'>
    То есть, "a" ссылается на какой-то конкретный объект в памяти, который имеет класс range. Он не list и не int. Он именно из class range. Вот к какому типу данных следует отнести вот этот конкретный объект из памяти?
  • Что такое "типы данных" в Python?

    @kazakovmaksim Автор вопроса
    Спасибо за ответ. К счастью вопросы возникли не на пустом месте и после прочтения нескольких книг.
    Возможно я не верно сформулировал вопрос.
    В моем вопросе под типами данных имеются ввиду именно типы данных в Python. Суть моего вопроса в том, что тип данных - это термин, у него есть много трактовок. Например "a class of data, characterized by the members of the class and the operations that can be applied to them".
    Строку едва ли стоит относить к "простым" данным - это особая упорядоченная последовательность. т.е. строка это тоже упорядоченная коллекция как и список и кортеж. Просто в отличии от кортежа или списка, она хранит свои элементы непосредственно.
    Я конечно занимаюсь буквоедством, но мне хотелось бы разобраться в этом вопросе не на уровне утилитарного применения.
    Терминология для меня важна. А терминологические дебри - интересны.
    Если под термином "простые типы данных" имеется ввиду "примитивный тип данных", то вполне возможно, что в рамках Python сюда стоит включить и кортежи и списки со словарями.
    В Python 3 есть вот такие типы данных:
    • Объект None.
    • Числа (int, float, complex).
    • Последовательности (строка, список, кортеж, bytearry, bytes).
    • Множества (set, frozenset).
    • Словари (dict).
    • Вызываемые объекты (да-да, функции и методы в Python это тип данных).
    • Логический тип (bool, класс которого наследует от int).

    Конечно, все их можно разделить на изменяемые и не изменяемые, но вопрос мой не об этом.
    Как известно в Python всё - объекты. Все объекты создаются каким-то классом, в котором определяется поведение объекта. Ну вот, функция range() возвращает специальный объект - он не словарь, не список. Но он же тоже данные, с которыми можно проделать какие-то операции, перечень которых определяется в class range. Следовательно это вполне подходит под определение типа данных.
    То есть, получается, что в список чуть выше, следует добавить ещё пункт "специальные типы данных".
    А если подумать, то и модули - это тоже тип данных.
    Так вот мне и не понятно, почему обычно в типы данных включают int, float, complex, set, dict, tuple, bool, иногда вспоминая про frozenset и совсем редко вспоминая про bytearry, bytes. Но если посмотреть на то как реализованы классы этих объектов, становится не понятно почему бы не считать всё что создают другие классы - другими типами данных.
  • Что такое "типы данных" в Python?

    @kazakovmaksim Автор вопроса
    Спасибо за ответ! Но list(), int() это тоже функции) И если мы обращаемся к map, не как к функции, а к тому, что вернула эта функция, а возвращает она что? Какие-то данные. И эти данные - это объект класса map. К нему можно применить функцию list(). И получить из объекта класса map список. Тоже самое с range, срезом и т.д. Они же все реализованы как классы. Мне просто кажется что и сама по себе функция (без её вызова) - это отдельный тип данных в Python.
  • Что такое range() в Python 3?

    @kazakovmaksim Автор вопроса
    Спасибо!