Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I navigate the Python documentation to find out the syntax for os.environ.get()?

Tags:

python

I saw this line in our code, our python version is 3.7.

example.py

PORT = os.environ.get("PORT", 5000)

I need to add an environment variable, but I need a default, and my background isn't Python. My guess is that 5000 above is a default value if there is no PORT in environment variables, but I want to double check this.

So I googled "os.environ.get python docs." This brought me to the os documentation on the python website, and I had to text search from ther efor environ until I found a paragraph dedicated to os.environ.

A mapping object where keys and values are strings that represent the process environment. For example, environ['HOME'] is the pathname of your home directory (on some platforms), and is equivalent to getenv("HOME") in C.

I had hoped for explicit documentation on environ.get but I figured that environ is itself some sort of Python data structure for which I'd need to look up documentation for on how to use. So I clicked the mapping object link. That brought me to another paragraph:

A container object that supports arbitrary key lookups and implements the methods specified in the Mapping or MutableMapping abstract base classes. Examples include dict, collections.defaultdict, collections.OrderedDict and collections.Counter.

At this point I'm a bit at a loss, because I don't think the docs ever said which kind of mapping object os.environ specifically is. So since it says "implements the methods specificed in the Mapping... abstract base classes" I clicked the abstract base classes link.

On that page I didn't see any reference to get(), so now I was confused because I was expecting a list of methods.

An alternative google search of course demonstrated that the second argument to .get() is the default should no such environment variable exist, but I'm curious what I did wrong there. I tried to do it "right" by looking up the information on my own (rtfm), but I failed. What was the actual proper way to use the Python documentation here?

like image 488
Caleb Jay Avatar asked Oct 20 '25 04:10

Caleb Jay


1 Answers

If the docs mention something returning a mapping type, it means it behaves very similar to the ubiquitous dict type.

https://docs.python.org/3/library/stdtypes.html#dict.get

The os module doc mentions:

This mapping is captured the first time the os module is imported, typically during Python startup as part of processing site.py. Changes to the environment made after this time are not reflected in os.environ, except for changes made by modifying os.environ directly

So reading the os.environ docs it seems that for example writes to os.environ are reflected in the system. Regular dict would not do this of course so that is one important difference between this custom mapping type and a dict.

like image 109
oartart Avatar answered Oct 21 '25 16:10

oartart