Ответ
Да, в 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
и т.д.) не являются объектами. Это синтаксические конструкции, которые определяют структуру и логику программы, а не данные, которыми можно манипулировать.