When you write a Python program, you are constantly creating and working with entities — the named, reusable pieces that Python tracks for you. Understanding what an entity is, and the different forms it can take, gives you a mental model that applies to every Python program you will ever read or write.
Python is sometimes described as a language where everything is an object. That is accurate at a technical level, but for new learners the word "entity" is a more useful starting point. An entity is simply a named thing your program can work with — a piece of data, a block of reusable logic, a template for creating objects, or a file full of code you want to bring in. Once you can recognize each kind, you can read Python code written by other people with much greater confidence.
What Is an Entity in Python?
An entity is any program element that Python stores, names, and lets you reference later. When you write score = 100, the integer 100 is stored in memory and the name score is bound to it. That binding — name plus stored value — is the simplest form of an entity.
The Python data model formalizes this idea: every value Python stores is an object, and every object has three things — an identity (a unique address in memory), a type (what kind of thing it is), and a value (the actual data it holds). Entities are the objects your code gives names to.
The official Python documentation describes Python's object model this way: "Objects are Python's abstraction for data. All data in a Python program is represented by objects or by relations between objects." Every entity you create is one of those objects.
You do not have to declare entities the way some other languages require. Python creates them the moment you assign a name to a value or define a function or class. The interpreter handles memory allocation for you.
# Three entities created in three lines
city = "Houston" # variable entity — a string
age = 34 # variable entity — an integer
pi = 3.14159 # variable entity — a float
# You can inspect any entity's identity and type
print(id(city)) # a unique memory address number
print(type(age)) # <class 'int'>
Run id(x) on two different variables that hold the same small integer — you may get the same number back. Python caches small integers (typically -5 to 256) as a performance optimization, so two names can point to the exact same object in memory.
Build the Python statement that checks the type of a variable named score:
type(score) returns the type of score, and wrapping it in print() outputs the result to the console. id() returns the memory address, not the type. len() returns the length of a sequence, which is unrelated here.
The Five Core Entity Types
Python programs are built from five main kinds of entities. Each one plays a different role, and recognizing them by sight is a foundational skill.
Variables
A variable is a name bound to a value. It is created the moment you assign something to it and deleted when it goes out of scope or is explicitly removed. Variables can hold any type of value, and you can reassign them freely.
username = "alex" # string variable
attempts = 0 # integer variable
is_logged_in = False # boolean variable
# Reassigning a variable changes what it points to
attempts = attempts + 1
print(attempts) # 1
Functions
A function is a named block of code that runs when called. In Python, functions are first-class entities — you can store them in variables, pass them to other functions, and return them from functions. They are defined with the def keyword.
def greet(name):
return f"Hello, {name}!"
message = greet("Sam")
print(message) # Hello, Sam!
# Functions are objects too — you can assign one to a variable
say_hi = greet
print(say_hi("Jordan")) # Hello, Jordan!
Classes
A class is a blueprint for creating objects. It defines what data an object holds (attributes) and what actions it can perform (methods). Classes are defined with the class keyword, and individual objects created from a class are called instances.
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breed
def bark(self):
return f"{self.name} says: Woof!"
# Create two instances from the same class blueprint
dog1 = Dog("Rex", "Labrador")
dog2 = Dog("Mochi", "Shiba Inu")
print(dog1.bark()) # Rex says: Woof!
print(dog2.breed) # Shiba Inu
Objects (Instances)
An object is a concrete instance created from a class. Every value in Python — integers, strings, lists, and instances of your own classes — is an object. When you write dog1 = Dog("Rex", "Labrador"), dog1 is the entity name and the Dog instance is the object it points to.
Modules
A module is a Python file you import into your program. When imported, it becomes an entity in the current namespace. You access the contents of a module using dot notation: module_name.function_name().
import math
import random
# math and random are now module entities in this program
print(math.sqrt(144)) # 12.0
print(random.randint(1, 6)) # a random number between 1 and 6
- Keyword
- No keyword — just assign with
= - Purpose
- Stores a value under a name so you can reference it later
- Keyword
def- Purpose
- Groups reusable logic that runs when called by name
- Keyword
class- Purpose
- A blueprint for creating objects with shared attributes and methods
- Keyword
- No keyword — created by calling a class
- Purpose
- A concrete instance of a class with its own data
- Keyword
import- Purpose
- Brings a Python file's contents into the current program as a named entity
Identity, Type, and Value
Every Python entity has three attributes built into the language itself. Knowing them helps you understand why two variables can hold the same value but still be different objects, and why some operations change an object while others return a new one.
Identity is the unique address Python assigns to an object in memory. You read it with id(). Two names can share an identity if they point to the same object — this is called an alias. The is operator checks identity, not equality.
Type is the category of the object: int, str, list, Dog, and so on. You read it with type(). The type controls what operations are valid — for example, you can call .upper() on a string but not on an integer.
Value is the actual data stored in the object. The == operator compares values. Two separate objects can be equal in value without being the same object in memory.
a = [1, 2, 3]
b = [1, 2, 3]
c = a # c and a point to the same object (alias)
print(a == b) # True — same value
print(a is b) # False — different objects in memory
print(a is c) # True — same object
print(id(a))
print(id(b)) # different from id(a)
print(id(c)) # same as id(a)
Aliasing lists can surprise new learners. If you write c = a and then modify c, the change also appears in a because both names point to the same list object. To get an independent copy, use c = a.copy() or c = a[:].
The code below tries to print the identity of a variable and then check whether two variables point to the same object. One line contains a bug. Click it, then hit check.
print(x = y) to print(x is y). Using = inside a function call attempts to pass a keyword argument, which causes a TypeError. The is operator is what checks whether two names point to the same object in memory.
How to Identify and Use Entities in Python
Follow these steps to create and work with the core Python entities. Each step corresponds to a different entity type, and you can run all of them in any Python environment.
-
Assign a variable
Choose a lowercase, descriptive name and use the
=operator to bind it to a value. Python creates the variable entity immediately — no type declaration needed. To verify it exists, callprint()or inspect it withtype()andid(). -
Define a function
Write
deffollowed by a name, parentheses for parameters, and a colon. Indent the function body below. Call the function by its name with parentheses to run the code inside it. The function name itself is a variable that points to the function object. -
Create a class and instantiate it
Define a class with the
classkeyword and include an__init__method to set up instance attributes. Create an instance by calling the class name like a function. Each instance is an independent object entity with its own copy of the attributes. -
Import and use a module
Write
import module_nameat the top of your file. Python locates the module file, executes it, and makes it available as an entity in your current namespace. Access its contents with dot notation:module_name.something. You can also usefrom module_name import somethingto bring a specific entity directly into scope.
"In Python, everything is an object." — Python Software Foundation documentation
Python Learning Summary Points
- An entity in Python is any named element the interpreter stores and tracks — including variables, functions, classes, objects, and modules. Every entity is an object with an identity, a type, and a value.
- The five core entity types each serve a different role: variables hold data, functions hold logic, classes define object blueprints, objects hold instance-specific data, and modules group related code in separate files.
- Python's three built-in inspection tools —
id(),type(), and==vsis— let you examine any entity's identity, type, and value at runtime, which is invaluable when debugging aliasing issues or unexpected behavior.
With these five entity types in your vocabulary, you have a framework for understanding every piece of Python code you encounter. Variables name your data, functions package your logic, classes describe your object blueprints, instances bring those blueprints to life, and modules let you organize and share code across files. The rest of Python builds on these building blocks.
Frequently Asked Questions
In Python, an entity is any named, reusable piece of a program that Python tracks internally. This includes variables, functions, classes, modules, and objects. Every entity has an identity, a type, and a value.
A variable is one kind of entity — it is a name that points to a value stored in memory. However, entities also include functions, classes, and modules, which are not typically called variables.
In Python, every entity is an object under the hood. The Python data model states that every value Python stores is an object with an identity, type, and value. Entity is the broader term used when describing the named things a program works with.
Python assigns every object a unique identity number that you can read using the built-in id() function. Two different names can point to the same underlying object, which means they share the same id.
A module is a file containing Python code that you import into other files. When imported, it becomes an entity in the importing program's namespace, giving you access to everything defined inside it.
Yes. In Python, functions are first-class entities. You can assign them to variables, pass them as arguments, and return them from other functions, just like any other value.
A class is a blueprint that defines structure and behavior. An instance is a concrete object created from that class. You can create many instances from a single class, each holding its own data.
Use the built-in type() function. For example, type(42) returns <class 'int'> and type('hello') returns <class 'str'>. For more detailed type checks, isinstance() is often preferred because it also handles inheritance.