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