Monthly Archives: Октябрь 2013

Декораторы

Декораторы в Python — это обертки для функций. (Или функции, получающие в качестве параметров другую функции)
Например

@dec2
@dec1
def func(arg1, arg2, ...):
    pass

— то же самое, что и:

def func(arg1, arg2, ...):
    pass
func = dec2(dec1(func))

via PEP 318

git

Краткий мануал (по мотивам  http://git-scm.com/book/ru)

Ставим git

$ apt-get install git

Конфигурируем

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

Инициализируем, добавляем файлы, создаем коммит, создаем новый репозиторий и загружаем в репозиторий

 

touch README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/username/projectname.git
git push -u origin master

Выгружаем с репозитория
git fetch origin master

Создаем локальную папку с содержимым репозитория
git clone git://github.com/username/projectname.git

yield

Коротко: yield — это return, возвращающий генератор.

1. Итератор. mylist = [1, 2, 3]. mylist = [x*x for x in range(1,3)]

2. Генератор — это итератор, который можно пройти только один раз. Значения генерируются «на лету» и не хранятся в памяти.

mylist = (x*x for x in range(1,3))

3. yield — функция, возвращающая вместо значения генератор

>>> def createGenerator():
...    mylist = range(3)
...    for i in mylist:
...        yield i*i

вернет генератор, который можно пройти только один раз.

Для чего это нужно? Часто нужно пройти последовательность, не загружая ее в память целиком. Допустим, построчная обработка набора больших файлов:

def get_lines(files):
    for f in files:
        for line in file.readlines():
             yield line

и вызываем:

for line in get_lines(files):
    #обрабатываем строку

via

http://stackoverflow.com/questions/231767/the-python-yield-keyword-explained — лучший ответ

и его перевод : http://habrahabr.ru/post/132554/

Еще:

http://www.kigorw.com/articles/python-yield-generator

http://stackoverflow.com/questions/7883962/where-to-use-yield-in-python-best