# exec()

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

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

**Что возвращает**: Функция `exec()` не возвращает никакого значения напрямую. Вместо этого она выполняет переданный код в текущей среде выполнения, что может привести к изменению глобальных или локальных переменных, вызову функций и другим побочным эффектам.

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

```python
exec(object, globals=None, locals=None)
```

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

Обратите внимание, что использование `exec()` с недоверенными данными может представлять риск для безопасности, так как это позволяет выполнять произвольный код.

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

1. Выполнение простого кода
2. Выполнение кода с определением функции
3. Использование `exec()` с глобальной и локальной областями видимости
4. Динамическое создание классов
5. Выполнение кода из пользовательского ввода (не рекомендуется по соображениям безопасности)

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

```python
exec("print('Hello, World!')")  # Выведет "Hello, World!"
```

{% endtab %}

{% tab title="2." %}

```python
exec("""
def greet(name):
    print(f"Hello, {name}!")
""")

greet("Alice")  # Выведет "Hello, Alice!"
```

{% endtab %}

{% tab title="3." %}

```python
globals_dict = {"x": 5}
locals_dict = {"y": 10}

code = "result = x + y"
exec(code, globals_dict, locals_dict)
print(locals_dict["result"])  # Выведет 15
```

{% endtab %}

{% tab title="4." %}

```python
class_definition = """
class MyClass:
    def __init__(self, value):
        self.value = value

    def get_value(self):
        return self.value
"""

exec(class_definition)
obj = MyClass(42)
print(obj.get_value())  # Выведет 42
```

{% endtab %}

{% tab title="5." %}

```python
user_input = input("Введите код Python: ")
exec(user_input)
```

{% endtab %}
{% endtabs %}

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bemind.gitbook.io/neural/python/vstroennye-funkcii-python/exec.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
