Skip to content

Python vars() Function

How the Python vars() function works, including its syntax, parameters, return values, and examples of using it with objects, class instances, and local scopes.

The vars() function returns the __dict__ attribute of an object, i.e. a dictionary containing the object's changeable attributes.

Syntax

vars(object)

vars() Parameters

Python vars() function parameters:

Parameter Condition Description
object Optional The object whose __dict__ attribute is to be returned

vars() Return Value

Python vars() function returns:

  • __dict__ attribute of the given object.
  • dictionary of the current local scope if no object is specified.

Examples

Example 1: Using vars() without an Argument

When called without arguments, vars() returns a dictionary containing the local symbol table, which can be useful for introspection of the current local scope.

print(vars())

output

{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>}

Example 2: Using vars() with a Class Instance

For example, consider the following Person class:

class Person:
    def __init__(self, name="Tom", age=25, sex="Male"):
        self.name = name
        self.age = age
        self.sex = sex

person = Person()
print(vars(person))

output

{'name': 'Tom', 'age': 25, 'sex': 'Male'}

Observe that vars(person) returns the __dict__ attribute of the Person instance, which is a dictionary containing the attributes name, age, and sex along with their values.

Example 3: Using vars() with Local Variables

The vars() function can be used within a function to introspect local variables and their values.

In the following example, the output includes the local variables a, b and result, showing the dynamic nature of vars().

def calculate_sum(a, b):
    result = a + b
    variables = vars()
    return variables

sum_variables = calculate_sum(5,  7)
print(sum_variables)

output

{'a': 5, 'b': 7, 'result': 12}

Example 4: vars() with Objects Without __dict__ Attribute

Attempting to use vars() function with objects that do not have a __dict__ attribute will result in a TypeError!

For example, strings and numbers do not have __dict__ attribute.

string = "Tom"

print(vars(string)) # raise a TypeError

output

Traceback (most recent call last):
  File "main.py", line 3, in <module>
    print(vars(string)) # raise a TypeError
TypeError: vars() argument must have __dict__ attribute
number = 132

print(vars(number)) # raise a TypeError

output

Traceback (most recent call last):
  File "main.py", line 3, in <module>
    print(vars(number)) # raise a TypeError
TypeError: vars() argument must have __dict__ attribute
Navigation