Абсолютно (для прикладу, який ви надали).
Кортежі - це першокласні громадяни Пітона
Існує вбудована функція, divmod()
яка робить саме це.
q, r = divmod(x, y)
Є й інші приклади: zip
, enumerate
, dict.items
.
for i, e in enumerate([1, 3, 3]):
print "index=%d, element=%s" % (i, e)
d = dict((v, k) for k, v in adict.items())
d = dict(zip(adict.values(), adict.keys()))
До речі, дужки більшість часу не потрібні. Цитата з довідкової бібліотеки Python :
Кортежі можуть бути побудовані різними способами:
- Використання пари дужок для позначення порожнього кортежу: ()
- Використання завершальної коми для одинарного кортежу: a, або (a,)
- Відокремлення предметів комами: a, b, c або (a, b, c)
- Використання вбудованого кортежу (): кортеж () або кортеж (ітерабельний)
Функції повинні мати єдину мету
Тому вони повинні повернути один об'єкт. У вашому випадку цей об'єкт - кортеж. Розглянемо кортеж як спеціальну складну структуру даних. Є мови, де майже кожна окрема функція повертає кілька значень (список у Lisp).
Іноді достатньо повернутися (x, y)
замість Point(x, y)
.
Названі кортежі
З введенням іменованих кортежів у Python 2.6 переважно у багатьох випадках повертати іменовані кортежі замість простих кортежів.
>>> import collections
>>> Point = collections.namedtuple('Point', 'x y')
>>> x, y = Point(0, 1)
>>> p = Point(x, y)
>>> x, y, p
(0, 1, Point(x=0, y=1))
>>> p.x, p.y, p[0], p[1]
(0, 1, 0, 1)
>>> for i in p:
... print(i)
...
0
1