Задача: написать функцию get_absolute_url принимающую:
1 обязательный аргумент url;
произвольное количество позиционных аргументов;
произвольное количество именованных аргументов.
Функция должна формировать полный url адрес из переданного домена и параметров:
Позиционные аргументы должны добавляться к переданному url через слэш ‘/’;
После добавления всех позиционных аргументов добавляется знак вопроса ?;
После знака вопроса добавляются именованные аргументы по шаблону ‘ключ=значение&’.
Вот пример работы функции:
print(get_absolute_url(‘www.yandex.ru’, ‘posts’, ‘news’, id=’24’, author=’admin’))
Должен получиться результат:
www.yandex.ru/posts/news?id=24&author=admin
def get_absolute_url(url, *args, **kwargs):
#ваш код
python
def get_absolute_url(url, *args, **kwargs):
# Формируем список для хранения позиционных аргументов
positional_args = list(args)
# Добавляем позиционные аргументы к url через слэш "/"
url += '/' + '/'.join(str(arg) for arg in positional_args)
# Формируем список для хранения именованных аргументов
params = []
# Добавляем именованные аргументы в виде "ключ=значение"
for key, value in kwargs.items():
params.append(f'{key}={value}')
# Формируем конечную строку параметров
params_str = '&'.join(params)
# Собираем итоговый URL с парами <ключ>=<значение> через "&"
if params_str:
url += '?' + params_str
return url
# Пример использования функции
result_url = get_absolute_url('www.yandex.ru', 'posts', 'news', id='24', author='admin')
print(result_url)
В этом коде:
1. Мы создаем и заполняем список `positional_args` значениями позиционных аргументов.
2. Добавляем позиционные аргументы к URL.
3. Создаем список `params`, чтобы хранить пары ключ-значение для именованных аргументов.
4. Заполняем список `params` парами <ключ>=<значение>.
5. Формируем строку `params_str` с объединенными параметрами.
6. Собираем итоговый URL, добавляя параметры после вопросительного знака.
7. В конце выводим результат.
После выполнения кода результатом будет `www.yandex.ru/posts/news?id=24&author=admin`, соответствующий требуемому формату URL-адреса.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет