Пифонический способ проверки параметра - это последовательность, а не строка

У меня есть функция, которая получает список таблиц БД в качестве параметра и возвращает командная строка, которая будет выполняться в этих таблицах, например:

pg_dump( file='/tmp/dump.sql',
         tables=('stack', 'overflow'),
         port=5434
         name=europe)

Должна возвращать что-то вроде:

pg_dump -t stack -t overflow -f /tmp/dump.sql -p 5434 europe

Это делается с помощью tables_string = '- t' + '-t' .join (tables) . .

Самое интересное начинается, когда функция вызывается с: tables = ('stackoverflow') (строка) вместо tables = (' stackoverflow ',) (кортеж), что дает:

pg_dump -t s -t t -t a -t c -t k -t o -t v -t e -t r -t f -t l -t o -t w
        -f /tmp/dump.sql -p 5434 europe

Потому что итерируется сама строка.

В этом SO-вопросе предлагается использовать утверждения для типа, но я не уверен, что он достаточно Pythonic, потому что он нарушает соглашение о типе утки.

Есть какие-нибудь идеи?

Адам

6
задан Community 23 May 2017 в 10:26
поделиться