我有一个非常简单的函数,它接受一个字符串作为输入,我尝试对函数进行检查,这样如果函数参数不是字符串,它将抛出一个错误,否则返回字符串。
现在的问题是,当我通过 int
,我希望函数显示一个错误,但它只是输出一个 int
. 我这里出了什么错?
def speak(*languages):
"""Function takes a set of langs as input and returns a list of languages"""
try:
if type(languages) == str:
languages = list(languages)
except TypeError as error:
print(error, ' You need to pass in the right datatype')
else:
return languages
我也试过这个。
def speak(*languages):
"""Function takes a set of langs as input and returns a list of languages"""
try:
if isinstance(languages, str):
languages = list(languages)
except TypeError as error:
print(error, ' You need to pass in the right datatype')
else:
return languages
我通过以下方式调用speak函数。
讲(‘英语’)-预期输出应为 english
讲(‘英语’、‘法语’)-预期输出应为 english
及 french
speak(34)-我希望函数抛出一个错误
4条答案
按热度按时间ijnw1ujt1#
在提供示例调用之后,您似乎希望检查字符串类型的所有参数,而不是一个参数。正确的?
你可以用
any
对于该值,如果列表/生成器值中的任何一个为真,则该值为真。在生成器理解中,您可以执行以下操作:isinstance
所有(位置)参数vawmfj5a2#
我认为这里不需要尝试。或许可以尝试以下方式(按照您的推理):
mum43rcc3#
也不
type(languages) == str
也没有isinstance(languages, str)
将抛出一个TypeError
,那么你的except
永远不会被击中。你只需要一个else
在你if
:注:我认为你不想要
list(languages)
以上-list("a str")
给予['a', ' ', 's', 't', 'r']
. 但我留下它是因为它与问题无关。gmol16394#
您实际上并没有在这里抛出错误,为此,您需要使用
raise
: