python - str 可以引发异常吗?

标签 python

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/

相关文章:

python - Jupyter 笔记本中的阻塞式交互式绘图

python - pandas concat 用 NaN 填充非对齐索引

python - scikit-learn 中具有相同属性的跨多列的标签编码

python - Cumprod 在 Python 中给出 -inf

python - Django,即使在 collectstatic 之后也没有提供 uwsgi 静态文件

python - 加载的主题图标的位置在哪里?

python - 使用 Drive API 在 Google Drive 中创建空电子表格

python - 从 Windows 批处理执行 Python 脚本时相对路径中断?

python - Django 休息框架中的 IntegrityError

python - CNN 仅针对 binary_crossentropy 损失函数收敛并且在测试数据集上失败