«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему Python 3 выдает синтаксическую ошибку при использовании вложенных аргументов кортежа?

Почему Python 3 выдает синтаксическую ошибку при использовании вложенных аргументов кортежа?

Опубликовано 10 ноября 2024 г.
Просматривать:617

Why Does Python 3 Give a Syntax Error When Using Nested Tuple Arguments?

Вложенные аргументы в Python 3

При запуске кода Python, который включает вложенные аргументы кортежа в качестве параметров функции, может возникнуть синтаксическая ошибка:

File "/usr/local/lib/python3.2/dist-packages/simpletriple.py", line 9
    def add(self, (sub, pred, obj)):
                  ^
SyntaxError: invalid syntax

Причина

В Python 3 распаковка параметров кортежа была удалена. Это означает, что функции больше не могут принимать кортежи в качестве аргументов и распаковывать их непосредственно в переменные.

Решение: распаковать вручную

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

def add(self, sub_pred_obj): # Previous syntax: def add(self, (sub, pred, obj))
    sub, pred, obj = sub_pred_obj
    # ... rest of the function

Эта модификация распаковывает кортеж sub_pred_obj в отдельные переменные sub, pred и obj.

Дополнительное примечание

Если функция является лямбда-функцией, распаковка вручную невозможна. Вместо этого рассмотрите возможность передачи кортежа как одного параметра и доступа к его элементам через индексацию:

lambda xy: (xy[1], xy[0]) # Instead of: lambda (x, y): (y, x)
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3