Python is a versatile programming language, and one of its powerful features is the ability to serialize and deserialize objects using the pickle
module. In simple terms, this means you can save Python objects to a file and later load them back into your program. Let’s break down how this works with a step-by-step example that even a 10-year-old can grasp!
What is the pickle
Module?
The pickle
module in Python allows you to convert Python objects into a format that can be easily saved to a file. Later, you can convert the file back into the original object. This is useful for saving complex data, like classes, so you can use it later without recreating it from scratch.
Step 1: Setting Up
First, you need to import the pickle
module. This is like telling your program that you want to use this special tool.
import pickle
Next, we’ll create a simple Python class to work with. A class is like a blueprint for creating objects. In our example, we’ll make a class called Food
:
class Food:
def __init__(self):
self.protein = 0
self.carbs = 0
self.fat = 0
def calc_calories(self):
calories = (self.protein * 4) + (self.carbs * 4) + (self.fat * 9)
return calories
Here’s what’s happening in the Food
class:
__init__
: This function initializes the class with default values forprotein
,carbs
, andfat
.calc_calories
: This function calculates the total calories based on the protein, carbs, and fat.
Step 2: Creating an Object
Now, let’s create an object of the Food
class. Think of this as creating a specific item from our blueprint. For example, we’ll create a cheese
object:
cheese = Food()
cheese.protein = 9
cheese.carbs = 1
cheese.fat = 9
Here, we set the values for protein
, carbs
, and fat
for our cheese
object.
Step 3: Saving the Object
To save this object, we use pickle
to write it to a file. This file will store our cheese
object so we can use it later.
with open('cheese.pkl', 'wb') as file:
pickle.dump(cheese, file)
In this code:
'cheese.pkl'
is the file name where we save the object.'wb'
stands for “write binary,” which is necessary for saving objects withpickle
.pickle.dump(cheese, file)
writes thecheese
object to the file.
Step 4: Loading the Object
To use the saved object later, we need to load it back into our program. Here’s how you do it:
with open('cheese.pkl', 'rb') as file:
loaded_cheese = pickle.load(file)
In this code:
'rb'
stands for “read binary,” which is necessary for reading the object.pickle.load(file)
reads the object from the file and assigns it toloaded_cheese
.
Step 5: Using the Loaded Object
Now that we’ve loaded our cheese
object, we can use it just like before:
print(loaded_cheese.carbs) # Output: 1
print(loaded_cheese.calc_calories()) # Output: 121
Saving Multiple Objects
Instead of saving one object at a time, you can save multiple objects using a dictionary. A dictionary lets you store multiple items with a name (key) and a value.
pantry = {}
pantry['cheese'] = cheese
egg = Food()
egg.protein = 5
egg.carbs = 1
egg.fat = 4
pantry['egg'] = egg
with open('pantry.pkl', 'wb') as file:
pickle.dump(pantry, file)
In this example, we:
- Created a
pantry
dictionary. - Added both
cheese
andegg
objects to it. - Saved the dictionary to a file named
'pantry.pkl'
.
To load and use these objects:
with open('pantry.pkl', 'rb') as file:
loaded_pantry = pickle.load(file)
loaded_cheese = loaded_pantry['cheese']
loaded_egg = loaded_pantry['egg']
print(loaded_cheese.protein) # Output: 9
print(loaded_egg.carbs) # Output: 1
Conclusion
The pickle
module is a handy tool for saving and loading Python objects, whether it’s a single object or multiple objects stored in a dictionary. By following these steps, you can easily save your work and pick up right where you left off.