Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python str可以引发异常吗?_Python - Fatal编程技术网

Python str可以引发异常吗?

Python str可以引发异常吗?,python,Python,str是否有可能引发不可调用的参数的异常?除了由于某种原因可以覆盖\uuuu repr\uuu的自定义类之外 我在函数的enter上有一些参数,如果它不是str,我就把它转换成它。我很好奇是否我必须处理异常,如果我必须,哪些异常?处理异常不是很好的做法,但似乎这是唯一的方法 编辑: 所谓不可调用,是指参数不是在str内部执行的,比如str(get\u something\u to\u convert())。在这个例子中,我应该处理内部函数中的异常。任何类都可以基于任何原因重写\uuuuuuuuu

str
是否有可能引发不可调用的参数的异常?除了由于某种原因可以覆盖
\uuuu repr\uuu
的自定义类之外

我在函数的enter上有一些参数,如果它不是
str
,我就把它转换成它。我很好奇是否我必须处理异常,如果我必须,哪些异常?处理
异常
不是很好的做法,但似乎这是唯一的方法

编辑:
所谓不可调用,是指参数不是在str内部执行的,比如
str(get\u something\u to\u convert())
。在这个例子中,我应该处理内部函数中的异常。

任何类都可以基于任何原因重写
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
,因为
调用
\uuuuuuuuuu。这本身就足够有理由准备获得例外

但对于非英语用户来说,一个常见的陷阱是使用Python2.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)
>>a=u'\xe9\xe8'
>>>打印
éè
>>>str(a)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
str(a)
UnicodeEncodeError:“ascii”编解码器无法对位置0-1中的字符进行编码:
序号不在范围内(128)
因此,当您对包含非ASCII字符的简单Unicode字符串调用
str
时,该字符串将引发异常


该函数只接受可以通过
str
直接转换为字符串的参数,这取决于您是希望处理异常还是文档

get\u something\u to\u convert()
是您真正的函数吗?或者,
get\u something\u to\u convert
是一个变量,它可以是函数,也可以是其他变量?我不清楚你的问题,即使是对于可调用的参数,如果你没有真正调用它们,那么你从
str(something)
得到错误的唯一方法就是如果
something.\uu str\uuuu()
(或
。\uuu repr\uuuu()
)引发一个异常,这将是。。。有点不寻常。@jornsharpe但这是可能的
str
不会做任何特殊的事情来吞下它们。@PeterWood不,这是真的;它不会悄悄地抑制任何已经发生的错误。@AnandSKumar这是唯一一个我不调用传递的参数的例子,我将其转换为原样。哦,好的,编码是可能发生的问题之一,我认为它将是唯一的一个。我也无法想象另一个例子,允许用户传递任何对象作为参数,但我认为我将很好地记录它并处理编码错误:)感谢一个lot默认情况下,我相信
\uuuuuuu str\uuuu
委托给
\uu repr\uuu
。该规则的主要例外是字符串类型,在Python2.x中是浮动的。例如,
str([])==repr([])
,但
str(“”)=报告(“”)