Давайте возьмем мудрый совет @ StephenRauch и переместим:
new_list = start, summ(start, direction)
за пределы цикла for
. И очистим код, как мы делаем:
def summ(a, b):
return a[0] + b[0], a[1] + b[1]
def position(argument):
maxx, start, direction = argument
new_list = [start]
for _ in range(maxx - len(new_list)):
new_list.append(summ(new_list[-1], direction))
return tuple(new_list)
print(position(((5), (2, 0), (1, 1))))
OUTPUT
> python3 test.py
((2, 0), (3, 1), (4, 2), (5, 3), (6, 4))
>
Теперь давайте немного повеселимся с кодом, а не изобретаем векторную арифметику мы импортируем Vec2D
из черепахи Python. И верните list
, который имеет для меня больше смысла, чем tuple
:
from turtle import Vec2D
def position(argument):
maxx, start, direction = argument
return [start + n * direction for n in range(maxx)]
print(position(((5), Vec2D(2, 0), Vec2D(1, 1))))
ВЫХОД
> python3 test2.py
[(2.00,0.00), (3.00,1.00), (4.00,2.00), (5.00,3.00), (6.00,4.00)]
>
Необходимо оставить дополнительные параметры запроса в Строке запроса. Нет никакого "правила" в REST, который говорит, что не может быть строки запроса. На самом деле это как раз наоборот. Строка запроса должна использоваться для изменения представления представления, которое Вы возвращаете клиенту.
Придерживайтесь "Объектов с Представимым состоянием" для Ваших компонентов контура URL. Категория кажется OK, но что точно Вы питаетесь по XML? Сообщения? Объекты каталога? Части?
Я думаю, что намного лучшая таксономия REST была бы похожа на это (предположение, что содержание Вашего канала XML является "статьей"):
Если Вы не думаете об объектах, Вы представляете при создании структуры REST, Вы не делаете REST. Вы делаете что-то еще.
Смотрите на эту статью о лучших практиках REST. Это старо, но это может помочь.
Параметры со значениями? Одна опция является строкой запроса. Используя его не является по сути неуспокоительным. Другая опция состоит в том, чтобы использовать точку с запятой, переговоры Tim Berners-Lee о них, и они могли бы просто отвечать всем требованиям, позволяя URL иметь смысл, не имея в широком масштабе длинных трактов.