A maneira pitônica de verificar o parâmetro é uma sequência, mas não uma sequência

Eu tenho uma função que obtém uma lista de tabelas de banco de dados como parâmetro e retorna uma cadeia de comando a ser executada nessas tabelas, por exemplo:

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

Deve retornar algo como:

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

Isso é feito usandotables_string='-t '+' -t '.join(tables).

A diversão começa quando a função é chamada com:tables=('stackoverflow') (uma sequência) em vez detables=('stackoverflow',) (uma tupla), que produz:

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

Porque a própria string está sendo iterada.

Esta questão SO sugere o uso de assertivas no tipo, mas não tenho certeza de que seja Pythonic o suficiente, porque quebra a convenção do tipo duck.

Alguma ideia?

Adão

questionAnswers(4)

yourAnswerToTheQuestion