我遇到过这种情况多次。我正在处理很多可以接受字符串列表的方法。有几次我不小心传递了一个单独的字符串,然后它被拆成一个列表,并且每个字符都被使用了,这不是期望的行为。
def test(a,b):
x = []
x.extend(a)
x.extend(b)
return x
x = [1,2,3,4]
我不希望发生的事情:
test(x,'test')
[1, 2, 3, 4, 't', 'e', 's', 't']
我不得不使用一种奇怪的语法:
test(x,['list'])
我希望这些可以隐式地工作:
test(x,'list')
[1, 2, 3, 4, 'test']
test(x,['one', 'two', 'three'])
[1, 2, 3, 4, 'one', 'two', 'three']
我觉得有一种“Pythonic”的方式或者涉及鸭子类型的方法可以解决这个问题,但我还没有想到。我知道我可以使用isinstance()函数来检查是否为字符串,但我觉得有更好的方法。
编辑:我正在使用Python 2.4.3。
list.extend()
预期行为以克服与意外输入相关的问题可能不是一个好主意。 - Austin Marshall