сделано ДЗ args, kwargs

This commit is contained in:
Dmitry Medvedev
2026-10-22 22:23:32 +05:00
parent fb2df83786
commit 2f2f48d3bf
+198
View File
@@ -0,0 +1,198 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "6d37ef1e",
"metadata": {},
"source": [
"Задача 1. Список таблиц для обработки\n",
"Напиши функцию process_tables, которая принимает любое количество названий таблиц через *args.\n",
"Функция должна:\n",
" вывести строку \"Начинаем обработку\";\n",
" затем для каждой таблицы вывести:\n",
"\n",
"Обрабатываем таблицу: users"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "e10a9075",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Начинаем обработку\n",
"Обрабатываем таблицу: users\n",
"Обрабатываем таблицу: orders\n"
]
}
],
"source": [
"def process_tables(*args):\n",
" print(\"Начинаем обработку\")\n",
" for table in args:\n",
" print(f\"Обрабатываем таблицу: {table}\")\n",
"\n",
"process_tables(\"users\", \"orders\")"
]
},
{
"cell_type": "markdown",
"id": "1b0576ec",
"metadata": {},
"source": [
"Задача2. Напиши функцию build_select_query, которая принимает:\n",
" table_name\n",
" любое количество колонок через args\n",
"Логика:\n",
"если колонки не переданы, вернуть:\n",
"\n",
" SELECT * FROM users\n",
"\n",
"если колонки переданы, вернуть:\n",
" \n",
" SELECT id,name,email FROM users"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "5dfaa1e0",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SELECT id, name FROM users\n"
]
}
],
"source": [
"def build_select_query(table_name, *args):\n",
" if args:\n",
" arg = \", \".join(args)\n",
" else:\n",
" arg = \"*\"\n",
" return f\"SELECT {arg} FROM {table_name}\"\n",
"print(build_select_query(\"users\", \"id\", \"name\"))"
]
},
{
"cell_type": "markdown",
"id": "a95cdb0a",
"metadata": {},
"source": [
"Задача 3. Напиши функцию create_connection_config, которая принимает:\n",
" connection_name\n",
" любое количество именованных параметров через *kwargs\n",
"Функция должна вернуть словарь вида:\n",
"\n",
" {\n",
" \"connection_name\":\"source_pg\",\n",
" \"settings\": {\n",
" \"host\":\"localhost\",\n",
" \"port\":5432,\n",
" \"user\":\"etl_user\"\n",
" }\n",
" }"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "69c1b275",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'connection_name': 'source_pg', 'settings': {'host': 'localhost', 'port': 5432, 'user': 'etl_user'}}\n"
]
}
],
"source": [
"def create_coonnection_config(connection_name, **kwargs):\n",
" config = {\n",
" \"connection_name\" : connection_name,\n",
" \"settings\" : kwargs\n",
" }\n",
" return config\n",
"result = create_connection_config(\"source_pg\",host=\"localhost\",port=5432,user=\"etl_user\")\n",
"print(result)"
]
},
{
"cell_type": "markdown",
"id": "ce6811bd",
"metadata": {},
"source": [
"Задача 4. Запуск ETL-задачи\n",
"Напиши функцию run_etl_task, которая принимает:\n",
" task_name\n",
" любое количество колонок через args\n",
" любое количество опций через *kwargs\n",
"Логика:\n",
" вывести имя задачи;\n",
" вывести список колонок;\n",
" вывести словарь с опциями.\n",
"Пример:\n",
"\n",
" run_etl_task(\n",
" \"load_users\",\n",
" \"id\",\"name\",\"email\",\n",
" source=\"s3\",\n",
" target=\"greenplum\",\n",
" mode=\"append\",\n",
" retries=3\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "bd011ce6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['load_users', ('id', 'name', 'email'), {'source': 's3', 'target': 'greenplum', 'mode': 'append', 'retries': 3}]\n"
]
}
],
"source": [
"def run_etl_task(tsk_name, *args, **kwargs):\n",
" config = [tsk_name, args, kwargs]\n",
" return config\n",
"print(run_etl_task(\"load_users\", \"id\",\"name\",\"email\", source=\"s3\", target=\"greenplum\", mode=\"append\", retries=3))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}