JBForth2 [Murkt#15.06.07 19:40]

А вы знаете, что на форумах снова оживлён чат?

Murkt

Pythoneer

Насчёт входных параметров:
code python
  1. def myfunc(a, b, c=5, *args, **kwargs):
  2.     print (a, b, c, args, kwargs)


*<название кортежа> - это неименованные параметры, **<название словаря> - именованные.

code python
  1. # с - значение по умолчанию, "лишних" нет
  2. >>> myfunc(1, 2)
  3. (1, 2, 5, (), {})
  4.  
  5. # с - значение по умолчанию, d - "лишнее"
  6. >>> myfunc(1, 2, d=3)
  7. (1, 2, 5, (), {'d': 3})
  8.  
  9. >>> myfunc(1, 2, d=3, *(2,4))
  10. (1, 2, 2, (4,), {'d': 3})
  11.  
  12. >>> myfunc(1, 2, 3, 4, 5, 6, d=7, e=8, f=9)
  13. (1, 2, 3, (4, 5, 6), {'e': 8, 'd': 7, 'f': 9})
  14.  
  15. # аналогично предыдущему
  16. >>> myfunc(*(1, 2, 3, 4, 5, 6), **{'d': 7, 'e': 8, 'f': 9})
  17. (1, 2, 3, (4, 5, 6), {'e': 8, 'd': 7, 'f': 9})
  18.  
  19. # можно комбинировать
  20. >>> myfunc(1, 2, 3, 4, x=10, y=11, *(5, 6), **{'d': 7, 'e': 8, 'f': 9})
  21. (1, 2, 3, (4, 5, 6), {'y': 11, 'x': 10, 'e': 8, 'd': 7, 'f': 9})


Использование в повседневной жизни на каждом шагу, особенно **kwargs. Вот пример из рабочего проекта, можно сказать функция-прокси:
code python
  1. @login_required
  2. @user_in_groups('Modellers')
  3. def modeller_bundles(request, **kwargs):
  4.     """ Show paginated list of bundles.
  5.    """
  6.     kwargs['template_name'] = 'modeller_bundles.html'
  7.     kwargs['queryset'] = sort_query(Bundle.objects.filter(modeller=request.user.username), request)
  8.     kwargs['extra_context'] = {'sorts': request.GET.getlist('sort')}
  9.     kwargs['paginate_by'] = settings.PAGINATE_BY
  10.     kwargs['template_object_name'] = 'bundle'
  11.     return object_list(request, **kwargs)


Но и *args не остаётся незамеченным :)
code python
  1. def sort_query(base_query, request):
  2.     """ Order base_query by parameters from request.GET['sort'].
  3.    """
  4.     if 'sort' in request.GET and request.GET['sort']:
  5.         return base_query.order_by(*tuple(request.GET.getlist('sort')))
  6.     return base_query
[team Їжачки - сумні падлюки]  
Это сообщение редактировалось 15.06.2007 в 19:49
Ссылки

в начало страницы | новое
Поиск
Настройки
Персональное
Новости сайта
Статистика
Яндекс.Метрика



 
Сайт работает на сервере ETegro Technologies