我还要指出,在我看来,担心很多类型传递给方法的做法违背了Python的精神。在Python中,我认为使用鸭子类型更被接受- 询问对象可以做什么,而不是对象可以做什么。
因此,如果您的方法可以接受字符串或元组,则可以执行以下操作:
def print_names(names):
"""Takes a space-delimited string or an iterable"""
try:
for name in names.split(): # string case
print name
except AttributeError:
for name in names:
print name
然后,您可以执行以下任一操作:
print_names("Ryan Billy")
print_names(("Ryan", "Billy"))
尽管类似的API有时表明存在设计问题。