处理typeerror异常的Pythonic方法

2024-06-02 05:41:40 发布

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

问题:下面代码中的函数[self._oun(upsplit[.....]返回单词(字符串)或布尔值(FALSE)。现在,当通过+运算符进行连接时,它尝试将bool(比如FALSE)与字符串连接起来,因此失败并出现异常(TypeError,将bool与str连接起来)。当返回一个字符串时,它工作得非常好。你知道吗

如何以pythonic方式更改代码来处理上述问题?我只是试着在这段代码前面放一个if语句来检查返回值,然后有两个else语句,一个if返回值是bool,另一个是string(在我看来不是pythonic)。你知道吗

return ' '.join(upsplit[:word-1] + 
                        [self._oun(upsplit[word-1], 1) +
                        '-' + upsplit[word] + '-']) + \
                        ' '.join(upsplit[(word+1):])

编辑:

如果它返回FALSE,我只想用upsplit[word]附加它,而不是返回值(这将是bool FALSE)。请注意,函数不会返回TRUE。它要么返回一个修改过的字符串,要么返回FALSE。如果返回FALSE,我只需要附加upsplit[word]中存储的原始字符串。你知道吗


Tags: 函数字符串代码selffalseif语句pythonic
2条回答
return ' '.join(upsplit[:word-1] + 
                        [self._oun(upsplit[word-1], 1) or upsplit[word] +
                        '-' + upsplit[word] + '-']) + \
                        ' '.join(upsplit[(word+1):])

str()调用中包装对self._oun的调用。bool上的str生成一个字符串表示形式('True'或'False'),在字符串上,它返回不变的参数。你知道吗

return ' '.join(upsplit[:word-1] + 
                    [str(self._oun(upsplit[word-1], 1)) +
                    '-' + upsplit[word] + '-']) + \
                    ' '.join(upsplit[(word+1):])

编辑

在阐明注释之后,Python中的三元运算符的工作原理如下:

a = ('a' if <test> else 'b')

对你来说

(self._oun(upsplit[word-1], 1) if (self._oun(upsplit[word-1], 1) != False) else upsplit[word-1])

请注意,它需要2个对_oun的调用,如果∗oun返回原始字符串而不是False,则会简单得多。你知道吗

相关问题 更多 >