我试图写一个函数,如果传递一个字符串或一个数字,则数据以相反的顺序返回。否则,它会按原样返回。
这是我的代码:
def reverse_it(data):
if isinstance(data, str):
return data[::-1]
elif isinstance(data, int):
return data[::-1]
else:
return data
这会导致错误:
File "play.py", line 10, in <module>
print reverse_it(9000)
File "play.py", line 5, in reverse_it
return data[::-1]
TypeError: 'int' object has no attribute '__getitem__'
为什么我可以检查str
对象的数据类型,而不是int?
答案 0 :(得分:0)
您认为应该在这里发生什么:
elif isinstance(data, int):
return data[::-1]
数据类型检查成功,但您无法对int进行切片。
你可以写
return str(data)[::-1]
编辑:您可能还需要
isinstance(data, basestring)
请参阅What is the difference between isinstance('aaa', basestring) and isinstance('aaa', str)?