Все ли в Python является объектами

Ответ

Да, в Python практически всё является объектами. Это одна из фундаментальных концепций языка.

Любая сущность, с которой вы работаете — числа, строки, списки, функции, классы, модули — является экземпляром какого-либо класса. У каждого объекта есть:

  • id (уникальный идентификатор в памяти)
  • тип (его класс)
  • значение

Пример:

# Число - это объект класса int
x = 42
print(f"Value: {x}, Type: {type(x)}, Is object: {isinstance(x, object)}")

# Функция - это объект класса function
def my_func():
    pass
print(f"Value: {my_func}, Type: {type(my_func)}, Is object: {isinstance(my_func, object)}")

# Класс - это тоже объект (класса type)
class MyClass:
    pass
print(f"Value: {MyClass}, Type: {type(MyClass)}, Is object: {isinstance(MyClass, object)}")

Результат выполнения:

Value: 42, Type: <class 'int'>, Is object: True
Value: <function my_func at ...>, Type: <class 'function'>, Is object: True
Value: <class '__main__.MyClass'>, Type: <class 'type'>, Is object: True

Важное уточнение: Ключевые слова языка (if, for, while, def, import и т.д.) не являются объектами. Это синтаксические конструкции, которые определяют структуру и логику программы, а не данные, которыми можно манипулировать.

Ответ 18+ 🔞

Да ты посмотри, какой Python-то хитрожопый оказался! Всё, абсолютно всё, что у него под капотом шевелится — это объекты, ёпта. Ну серьёзно, как в том анекдоте: «Муму!» — а это не просто собака, это объект класса «Собака», блядь!

Вот смотри, берёшь ты, допустим, циферку какую-нибудь, там, 42. Ты думаешь: «А, ну число, чё там». А оно, сука, не просто число! Это полноправный объект, экземпляр класса int! У него есть свой паспорт (id), фамилия (тип) и, собственно, физиономия (значение).

# Число - это объект класса int
x = 42
print(f"Value: {x}, Type: {type(x)}, Is object: {isinstance(x, object)}")

# Функция - это объект класса function
def my_func():
    pass
print(f"Value: {my_func}, Type: {type(my_func)}, Is object: {isinstance(my_func, object)}")

# Класс - это тоже объект (класса type)
class MyClass:
    pass
print(f"Value: {MyClass}, Type: {type(MyClass)}, Is object: {isinstance(MyClass, object)}")

Запустишь это — и офигеешь, как Герасим, когда Муму утопил. Все строчки выведут Is object: True. Функция? Объект! Сам класс? Да ёбаный в рот, и это объект, класса type! Пиздец, всё связано, всё — объекты. В рот меня чих-пых!

Но! Есть одно важное «но», чтобы ты не обосрался с перепугу. Ключевые слова языка — вот эти все if, for, def — это НЕ объекты. Это как бы священные скрижали, правила грамматики. Их нельзя в переменную запихнуть или методу передать. Это просто кирпичики, из которых код собирается. Не объекты они, блядь, а синтаксис. Запомни, как «Муму» — раз и в воду.