# dir()

Функция `dir()` в Python используется для получения списка атрибутов (переменных, методов, функций и т.д.) определенного объекта.

**Назначение**: Основная цель функции `dir()` - предоставить список всех атрибутов, принадлежащих объекту или модулю. Она может быть полезна для исследования объектов, классов и модулей во время разработки или отладки программ.

**Что возвращает**: Функция `dir()` возвращает список строк, представляющих имена атрибутов объекта.

**Описание**: Синтаксис функции `dir()` следующий:

```python
dir([object])
```

* `object` (необязательный) - объект, для которого нужно получить список атрибутов. Если не указан, `dir()` возвращает список имен в текущей локальной области видимости.

Список, возвращаемый функцией `dir()`, включает в себя атрибуты, принадлежащие самому объекту, а также атрибуты, унаследованные от базовых классов или модулей.

**Примеры использования**:

1. Получение списка атрибутов объекта
2. Получение списка атрибутов модуля
3. Получение списка имен в текущей локальной области видимости

{% tabs %}
{% tab title="1." %}

<pre class="language-python"><code class="lang-python"><strong>class MyClass:
</strong>    def __init__(self):
        self.attr1 = 10
        self.attr2 = 20

    def my_method(self):
        pass

obj = MyClass()
print(dir(obj))
# Выведет ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'attr1', 'attr2', 'my_method']
</code></pre>

{% endtab %}

{% tab title="2." %}

```python
import math
print(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', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'ulp']
```

{% endtab %}

{% tab title="3." %}

<pre class="language-python"><code class="lang-python"><strong>x = 10
</strong>y = 20

def my_func():
    z = 30
    print(dir())  # Выведет ['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'my_func', 'x', 'y']

my_func()
</code></pre>

{% endtab %}
{% endtabs %}

Функция `dir()` является полезным инструментом для исследования объектов, классов и модулей во время разработки и отладки программ. Она может быть использована для получения списка доступных методов и атрибутов объекта, что помогает лучше понять его структуру и поведение.
