1. Кактус

    06.01.2010

    0 ↑
    3 ↓
    • Главное назначение кортежей - передавать параметры функциям.
    • При задании кортежей требуется в конце ставить запятую.
    • Одно из основных принципов Python - лучше писать явные определения, чем полагаться на неявное поведение.
    Но при передаче параметров функции запятую в конце не ставят. Почему?
  2. Иван Сагалаев

    06.01.2010

    2 ↑
    0 ↓

    Из четырёх предпосылок вашего вопроса три не соответствуют действительности (два первых пункта списка и про запятую в конце параметров функции). Соответственно, вопрос теряет смысл.

    Расскажите подробно, что привело вас к таким наблюдениям.

  3. 1. Нет, их назначение хранение неизменяемых значений. Распаковка и запаковка значений просто синтаксический сахар.
    2. Нет, только если в кортеже 1 элемент чтобы не перепутать.
    3. Да.
    Но при передаче параметров функции запятую в конце не ставят. Почему?
    А в чем смысл?
  4. Кактус

    06.01.2010

    0 ↑
    0 ↓
    Ой, поспешил с выводами. Сильно извиняюсь.
    А первый пункт - дословная цитата из этой книжки.
  5. astur.net.ru

    06.01.2010

    0 ↑
    0 ↓

    Вообще, синтаксис объявления кортежей действительно странноват, но функции тут точно не при чём. Параллель с перлом прослеживается, конечно, но это чисто внешнее сходство.

  6. Иван Сагалаев

    06.01.2010

    4 ↑
    0 ↓

    А вообще, завершающая запятая имеет очень простое практическое назначение. Если перечисляемые значения располагаются в столбик:

    my_tuple = (
        'item1',
        'item2',
        'item3',
    )
    

    ... то наличие запятых во всех строках позволяет добавлять новые строки, удалять существующие и менять их местами, не заботясь об этих запятых. Если бы её там не было, надо было бы каждый раз следить за тем, чтобы у всех элементов она была, а у последнего не было.

    Точно то же самое работает и при вызове функций с большим числом длинных параметров:

    func(
        param1 = 'value1',
        param2 = 'value2',
        param3 = 'value3',
    )
    
  7. Это требование отсутствия запятой в конце, кстати, очень бесит в JavaScript-e

  8. Виталий

    08.01.2010

    0 ↑
    1 ↓
    Ave, запятая :-)

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.