Форум сайта python.su
0
Добрый день. Возникло несколько вопросов по использованию python api mercurial
1. Есть ли документация к api с примерами использования? Или м.б кто-нибудь использовал в своих проектах и может поделиться кодом.
2. Пока сгенерировал документацию epydoc-ом, но есть не понятные мне вещи. Интересует модуль mercurial.commands. Есть там функция log и вызов ее описан так log(ui, repo, *pats, **opts). Что за параметры *pats и **opts? Т.е интересует их значение в контексте использования в вызове и что значат *.
3. Проводя аналогию с беспроблемным вызовом без параметров с * функции add вызываю log
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
from mercurial import ui, hg, commands
if __name__ == "__main__":
u = ui.ui(interactive=False) # get a ui object
r = hg.repository(u, '/home/blabla/mercurialrepo')
commands.log(u, r)
Traceback (most recent call last):
File "/home/blabla/NetBeansProjects/blabla/src/blabla.py", line 9, in <module>
command_log = commands.log(u, r)
File "/usr/lib/python2.6/site-packages/mercurial/commands.py", line 1864, in log
changeiter, matchfn = cmdutil.walkchangerevs(ui, repo, pats, get, opts)
File "/usr/lib/python2.6/site-packages/mercurial/cmdutil.py", line 991, in walkchangerevs
revs = revrange(repo, opts['rev'] or [defrange])
KeyError: 'rev'
Офлайн
0
С параметрами разобрался, цитата из “Язык программирования Python”
“Если в определении функции присутствует формальный параметр в виде **name, то его значением становится словарь, содержащий все именованные аргументы, чьи имена не соответствуют формальным параметрам. Такой способ можно комбинировать с формой *name, позволяющей получить кортеж (tuple), содержащий позиционные аргументы, не входящие в список формальных параметров.”
Все вроде стало понятно, но зачем использовать такой способ передачи параметров, тем более, что они по ходу оказываются в одном случае обязательными, в другом - нет? Какие преимущества в этом способе?
Офлайн
0
Именно в этом и есть преимущества. Можно указывать,а можно не указывать, если не надо ;)
Офлайн