Python:如何定义获取字符串列表或字符串的函数

zen*_*poy 2 python

假设我想在数据库中添加字符串列表或只添加一个字符串:

names = ['Alice', 'Bob', 'Zoe']
Run Code Online (Sandbox Code Playgroud)

我希望这add_to_db会接受这两种情况

add_to_db(names)
add_to_db('John')
Run Code Online (Sandbox Code Playgroud)

这是正确的方法:

def add_to_db(name_or_names):
    if (...):
        ... # add a single name
    else:
        for name in name_or_names:
            ... # add a single name
    commit_to_db()
Run Code Online (Sandbox Code Playgroud)

我应该在第一个中加入什么...,作为一个字符串列表或只是一个字符串的条件(不要忘记该字符串也是可迭代的)?

Tri*_*ych 5

我认为你最好的选择是将一个字符串转换为1个元素的列表,然后让你的其余函数专门处理列表.

def add_to_db(name_or_names):
    import types
    if isinstance(name_or_names, types.StringTypes):
        name_or_names = [name_or_names]
    try:
        for name in name_or_names:
            add_name(name)
        commit_to_db()
    except TypeError:
            # we didn't get a string OR a list >:(
Run Code Online (Sandbox Code Playgroud)