Ошибка из-за необязательных аргументов переменной длины (* args) в Python 2 - PullRequest
0 голосов
/ 13 марта 2020

Я пытаюсь запустить код ниже python 2, но получаю неверный синтаксический код ошибки.

    columns = ["col1"]
    funcs = val_to_list(funcs)
    exprs = []

    for col_name in columns:
        for func in funcs:
            exprs.append((func, (col_name, *args)))

Я взял этот код из проекта Python 3, но я хочу, чтобы он работал в Python 2. Я пробовал несколько комбинаций, но не работал. Пожалуйста, помогите!

1 Ответ

2 голосов
/ 13 марта 2020

(col_name, *args) создает новый кортеж с col_name в качестве первого элемента, за которым следуют все элементы из args. Этот синтаксис называется итеративная распаковка и был впервые добавлен к Python 3,5 .

Просто создайте кортеж путем конкатенации:

t =  (col_name,) + args  # assuming args is a tuple too
exprs.append((func, t))

Если args сам по себе еще не является кортежем, преобразуйте его:

t =  (col_name,) + tuple(args)  # works with any iterable.
exprs.append((func, t))
...