str
是否有可能为 non-callable 参数引发异常?除了出于某种原因可以覆盖 __repr__
的自定义类之外?
我对函数的输入有一些争论,如果它不是 str
我正在将它转换成它。我很好奇我是否必须处理异常,如果必须,哪些异常?处理 Exception
不是好的做法,但它似乎是唯一的方法。
编辑:
不可调用是指参数不在 str 内部执行,例如 str(get_something_to_convert())
。在这个例子中,我应该在内部函数中处理异常。
最佳答案
任何类都可以出于任何原因覆盖 __str__
,因为 str
调用 __str__
,而不是 __repr__
,如果两者都是定义。恕我直言,这本身就有足够的理由准备好获得异常(exception)。
但非英语用户的一个常见陷阱是 Python 2.x 的 Unicode 字符串。看看下面的代码:
>>> a = u'\xe9\xe8'
>>> print a
éè
>>> str(a)
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
str(a)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1:
ordinal not in range(128)
因此,当您对其调用 str
时,包含非 ASCII 字符的简单 Unicode 字符串将抛出异常。
这取决于您是喜欢处理异常,还是记录该函数只接受可以使用 str
直接转换为字符串的参数。
关于python - str 可以引发异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31806738/