Python bool()函数能否引发无效参数的异常?

2024-04-28 12:46:16 发布

您现在位置:Python中文网/ 问答频道 /正文

如果参数不能转换为适当的数值类型,int()float()等函数有可能引发异常(ValueError)。因此,如果有一个无效的参数被传递给它们,通常最好将它们括在try-except中。在

但是,考虑到Python在“truthiness”问题上的灵活性,我想不出任何可能传递给bool()函数的值会引发异常。即使您不带任何参数调用它,函数也会完成并返回False。在

只要我提出一个例外,你就不会错了吗?因此,将调用封闭在try-except中没有任何意义?在


Tags: 函数false类型参数floatint数值意义
1条回答
网友
1楼 · 发布于 2024-04-28 12:46:16

__bool__不返回True或{}时,bool会抱怨。在

>>> class BoolFail:
...     def __bool__(self):
...         return 'bogus'
... 
>>> bool(BoolFail())
[...]
TypeError: __bool__ should return bool, returned str

不过,没有一种内置类型是如此疯狂。在

DSM做了一个非常有价值的评论:流行的库有一些例子,bool会产生错误。在

^{pr2}$

user2357112指出了下面的情况。在

Standard, near-universal stdlib example for things like this: a weakref.proxy to a dead object will raise a ReferenceError for almost any operation, including bool.

>>> import weakref
>>> class Foo:
...     pass
... 
>>> bool(weakref.proxy(Foo()))
[...]
ReferenceError: weakly-referenced object no longer exists

这不是bool独有的,任何使用其dead参数的函数都可能抛出此错误,例如myfunc = lambda x: print(x)。在

相关问题 更多 >