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