When working with Python, you may come across the os.getenv and os.environ functions. While both of these functions are used to access environment variables, they work in slightly different ways. In this blog post, we’ll explore the differences between os.getenv and os.environ, and discuss which one is better to use in different situations.
Table of Contents
What are Environment Variables?
Before we dive into the differences between os.getenv and os.environ, let’s first discuss what environment variables are.
Environment variables are a way to store and manage configuration settings that are used by the operating system and programs running on it. These variables are essentially key-value pairs, where the key is the name of the variable and the value is the value assigned to that variable.
Some common examples of environment variables include:
PATH– which lists the directories that the operating system will search for executable filesHOME– which specifies the home directory of the current userUSER– which contains the name of the current user
os.getenv
The os.getenv function is a Python built-in function that allows you to retrieve the value of a specific environment variable. Here is the basic syntax for using os.getenv:
os.getenv(variable_name, default_value)
The variable_name parameter is the name of the environment variable you want to retrieve. The default_value parameter is an optional parameter that specifies the default value to return if the environment variable is not set. If the environment variable is set, os.getenv returns the value of the environment variable as a string.
Here is an example of using os.getenv to retrieve the value of the HOME environment variable:
import os
home_directory = os.getenv('HOME')
print(home_directory)
In this example, os.getenv is used to retrieve the value of the HOME environment variable. If the HOME environment variable is set, home_directory will be set to its value. If it is not set, home_directory will be set to None.
os.environ
The os.environ dictionary is a Python built-in dictionary that contains all of the environment variables currently set on the operating system. Here is an example of how to access the os.environ dictionary:
import os
for key, value in os.environ.items():
print(key, value)
In this example, we use a for loop to iterate through all of the key-value pairs in the os.environ dictionary and print them out.
You can also access a specific environment variable using the [] operator, like this:
import os
home_directory = os.environ['HOME']
print(home_directory)
In this example, os.environ['HOME'] retrieves the value of the HOME environment variable.
Differences between os.getenv and os.environ
The main difference between os.getenv and os.environ is that os.getenv retrieves the value of a specific environment variable, while os.environ contains all of the environment variables currently set on the operating system.
Here are a few other differences to keep in mind:
os.getenvtakes an optionaldefault_valueparameter, which allows you to specify a default value to return if the environment variable is not set.os.environdoes not have this option.- If you use
os.environto modify an environment variable, the change will be reflected in all subprocesses launched from your Python program. If you useos.getenvto modify an environment variable, the change will only affect your Python program. os.getenvreturnsNoneif the specified environment variable is not
Must Learn – Secure Your Django Application’s SECRET_KEY with an .env File

“if you use os.getenv to modify an environment variable”
Don’t you mean os.putenv? os.getenv shouldn’t modify anything