我想创建一个返回不同输入对象长度的函数,如果没有长度则返回-1。预期输出如下:
my_dict = {'a': 23, 'b': 8}
len_safe(my_dict)
2
len_safe(7)
-1
我想使用异常处理,但是对于如何启动感到困惑。
答案 0 :(得分:2)
您始终可以捕获TypeError
,如果没有-1
,则返回len()
:
def len_safe(obj):
try:
return len(obj)
except TypeError:
return -1
我不确定此类功能的可用性。
答案 1 :(得分:1)
您可以使用hasattr
来检查对象是否具有__len__
作为属性,否则返回-1
def safe_len(o):
return len(o) if hasattr(o, '__len__') else -1
实际情况:
>>> safe_len(7)
-1
>>> safe_len([1,2,3])
3