Python dir()
Tags: python, programming, codenewbie, tutorial
Published: 2021-10-19 09:16:25

---
title: Python dir()
published: true
date: 2021-10-16 08:30:00 UTC
tags: #python #programming #codenewbie #tutorial
canonical_url: https://itsmycode.com/python-dir/
---

ItsMyCode |

The **`dir()`** method is an inbuilt function in Python which returns all the valid list of attributes and methods of any object. ( **functions** , **dict** , **list** , **string** , **tuple** etc.)

## dir() Syntax 

The syntax of the **`dir()`** method is:

```
**dir([object])**
```

## dir() Parameters

The **`dir()`** method takes only one argument as an object.

- **object(optional) – **The object which you want to see the valid attributes.

## dir() Return Value

**`dir()`** method returns the valid list of attributes for a given object. 

The **`dir()`** function behaves differently for different types of objects. It aims to return the relevant information rather than complete information.

- **For Class Objects –** Returns all the names of valid attributes and the base attributes of the class object.
- F **or Modules or Library –** It tries to return a list of names of all the attributes in that module. 
- If no parameter is passed to the **`dir()`** method, it returns a list of names in the current local scope. 

## **Example 1:** How dir() works?

The below example provides all the valid attributes of a list object.

```python 
# dir() method for list
lst_numbers = [1, 2, 3, 4, 5]
print(dir(lst_numbers))

```

**Output**

```python 
[' __add__', ' __class__', ' __class_getitem__', ' __contains__', ' __delattr__',
 ' __delitem__', ' __dir__', ' __doc__', ' __eq__', ' __format__', ' __ge__', 
' __getattribute__', ' __getitem__', ' __gt__', ' __hash__', ' __iadd__', ' __imul__', 
' __init__', ' __init_subclass__', ' __iter__', ' __le__', ' __len__', ' __lt__', 
' __mul__', ' __ne__', ' __new__', ' __reduce__', ' __reduce_ex__', ' __repr__', 
' __reversed__', ' __rmul__', ' __setattr__', ' __setitem__', ' __sizeof__', ' __str__',
 ' __subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 
'insert', 'pop', 'remove', 'reverse', 'sort']
```

## **Example 2:**  When no parameters are passed to dir() method with and without importing external libraries.

If no parameter is passed to the **`dir()`** method, it returns a list of names in the current local scope. 

- In the first case, we have not imported any module, and **`dir()`** methods return the default names.
- In the second case, we have imported two modules(random and math), and the **`dir()`** method returns these module names as it is added to the local namespace.

```python 

# Python3 code to demonstrate dir()
# when no parameters are passed to dir()
 
# Note that we have not imported any modules
print(dir())

# when modules are imported
import random
import math
 
# in this case dir() returns the module names added to the localnamespace
print(dir())
```

**Output**

```python 
[' __annotations__', ' __builtins__', ' __cached__', ' __doc__', ' __file__',
 ' __loader__', ' __name__', ' __package__', ' __spec__']

[' __annotations__', ' __builtins__', ' __cached__', ' __doc__', ' __file__',
 ' __loader__', ' __name__', ' __package__', ' __spec__', 'math', 'random']
```

## **Example 3:**  When a module object is passed as a parameter?

```python 

# Python3 code to demonstrate dir()
# when module objects are passed to dir()
 
import random
import math
 
print(dir(random))
print(dir(math))
```

**Output**

```python 
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST',
 'SystemRandom', 'TWOPI', '_Sequence', '_Set', ' __all__', ' __builtins__',
 ' __cached__', ' __doc__', ' __file__', ' __loader__', ' __name__', ' __package__',
 ' __spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp',
 '_floor', '_inst', '_log', '_os', '_pi', '_random', '_repeat', '_sha512', '_sin',
 '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate',
 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits',
 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randbytes',
 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle',
 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']

[' __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']
```

## **Example 4:**  dir() on User-defined Object

```python 

# Python3 code to demonstrate dir()
# on user defined object
 
class Employee:
    # Function __dir()___ which list all
    # the base attributes to be used.
  def __dir__ (self):
    return ['Id', 'FirstName', 'LastName', 'Salary','JoiningDate']
    
# user-defined object of class Employee
emp = Employee()

# listing out the dir() method for the userdefined object
print(dir(emp))
```

**Output**

```python 
['FirstName', 'Id', 'JoiningDate', 'LastName', 'Salary']
```

## Conclusion 

The **`dir()`** function will help mainly in debugging the application. In the case of the large project, it will be really useful for developers when handling a lot of classes and functions separately, and **`dir()`** will list out all the attributes of the object passed to it.  

The post [Python dir()](https://itsmycode.com/python-dir/) appeared first on [ItsMyCode](https://itsmycode.com).