Оператор печати внутри функции, используемой в лямбда-функции, не выполняется - PullRequest
0 голосов
/ 12 февраля 2019

В приведенном ниже коде gen_window содержит оператор print, но когда я запускаю код, оператор print не выполняется.Почему это так, и как я должен отлаживать такие лямбда-функции?(Даже отладчик игнорирует точку останова в этих функциях.)

getpairs = rdd.flatMap(lambda xi: gen_window(xi, n))


def gen_window(xi, n):
    x, i = xi
    l = []
    for offset in range(n):
        print("-->", (i - offset, (i, x)))
        l.append((i - offset, (i, x)))
    return l

1 Ответ

0 голосов
/ 12 февраля 2019

Работы:

def gen_window(xi, n):
    x, i = xi
    l = []
    for offset in range(n):
        print("-->", (i - offset, (i, x)))
        l.append((i - offset, (i, x)))
    return l

xi = [3,5]
n = 3

gen_window(xi, n)

Лямбды исполняются только тогда, когда вы их фактически используете - если вы не получаете вывод, вы, вероятно, никогда его не используете.

Вывод:

--> (5, (5, 3))
--> (4, (5, 3))
--> (3, (5, 3))
...