Today I learned about the built-in function vars
in Python.
vars
Python has a bunch of built-in functions. Like, a lot! It's very difficult to keep track of all of them, remember them, and use them correctly.
A built-in function I just learned about is vars
.
I heard about it from Reuven Lerner (a Python trainer) in his newsletter “Better Developers”.
(Disclaimer: that's a referral link, but I am a subscriber and avid reader of the newsletter,
so it is a very honest recommendation!)
Looking at the Python documentation, we can see what vars
does:
“Return the
__dict__
attribute for a module, class, instance, or any other object with a__dict__
attribute.”
The documentation also goes on to say that “without an argument, vars()
acts like locals()
.”.
So that's not useful because we can always use locals()
.
When vars
really shines is when you give it an argument, like a module or a class instance!
>>> class Person:
... def __init__(self, name):
... self.name = name
...
>>> p = Person("me")
>>> vars(p)
{'name': 'me'}
So, we can see that vars
is a very handy way of inspecting an instance of a class you defined.
Quite cool, right?
For things like built-in classes, or modules, vars
is similar to dir
.
Recall that dir
lists the names of all the attributes of an object,
but vars
will give you a mapping with the names of the attributes and the corresponding values:
>>> import math
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'lcm', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'nextafter', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc', 'ulp']
>>> vars(math)
{'__name__': 'math', '__doc__': 'This module provides access to the mathematical functions\ndefined by the C standard.', ...}
That's it for now! Stay tuned and I'll see you around!
+35 chapters. +400 pages. Hundreds of examples. Over 30,000 readers!
My book “Pydon'ts” teaches you how to write elegant, expressive, and Pythonic code, to help you become a better developer. >>> Download it here 🐍🚀.