Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 23, 2015 09:42:39

kciosdse
Зарегистрирован: 2015-01-23
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Откуда значение у переменной?

Всем привет. Решаю одну задачу, для этого нужно разложить число на слагаемые. Нашёл такую функцию:

def part(n, k):
    def _part(n, k, pre): 
        if n <= 0:
            return []
        if k == 1:
            print pre # Тут у переменной уже есть значение - '1'
            if n <= pre: # Её сравнивают с n
                return [[n]] # И возвращают n
            return []
        ret = []
        for i in range(min(pre, n), 0, -1):
            ret += [[i] + sub for sub in _part(n-i, k-1, i)]
        print(ret)
        return ret
    return _part(n, k, n)

Вызываю её вот так: part(1, 1)
Дальше вызывается внутренняя функция(или метод.. не знаю как назвать) _part(n, k, pre) с параметром pre который как-то присваивает себе значение 1. Так вот. Помогите разобраться, откуда появляется значение параметра?



Офлайн

#2 Янв. 23, 2015 09:53:56

alexbadaloff
От: Иваново
Зарегистрирован: 2013-04-11
Сообщения: 198
Репутация: +  16  -
Профиль   Отправить e-mail  

Откуда значение у переменной?

Это только объявление функции:

def _part(n, k, pre):
    ...

А после её вызов и сразу возвращение результата из part(n, k):
return _part(n, k, n)
И как видно pre будет равен n.



————————–
Истина где-то рядом

Офлайн

#3 Янв. 23, 2015 09:58:54

kciosdse
Зарегистрирован: 2015-01-23
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Откуда значение у переменной?

Вот блин, сразу не дошло) спасибо!

Офлайн

#4 Янв. 23, 2015 10:08:42

alexbadaloff
От: Иваново
Зарегистрирован: 2013-04-11
Сообщения: 198
Репутация: +  16  -
Профиль   Отправить e-mail  

Откуда значение у переменной?

kciosdse
функция(или метод.. не знаю как назвать)
Кстати, если брать терминологию для С++, например отсюда, то там написано:
В соответствии со стандартной терминологией ООП функции –
компоненты класса или компонентные функции можно называть методами.

А это я понимаю как, если функция описана сама по себе - то это просто функция. А если она внутри класса, то уже метод.



————————–
Истина где-то рядом

Отредактировано alexbadaloff (Янв. 23, 2015 10:12:25)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version