我有一个函数,它获取数据库表列表作为参数,并返回要在这些表上执行的命令字符串,例如:
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 question建议在类型上使用断言,但我不确定它是否足够 Pythonic,因为它打破了鸭子类型的约定。
有什么见解吗?
亚当