对于下面的代码:Python的控制流程
def isString(x):
if type(x)==str:
return True
return False
当我输入一个字符串到参数,返回true后,为什么不也再返回False?我是Python的新手,我很困惑,因为我认为它会返回False,因为它不在for循环中,但它没有。
对于下面的代码:Python的控制流程
def isString(x):
if type(x)==str:
return True
return False
当我输入一个字符串到参数,返回true后,为什么不也再返回False?我是Python的新手,我很困惑,因为我认为它会返回False,因为它不在for循环中,但它没有。
答案对任何语言都是一样的。 return语句表示从函数返回,并返回一个可选值。它只能返回一次。在这种情况下,它将返回条件语句。
顺便说一句,类型检查就像使用is
运算符。
if type(x) is str:
return True
但事实上,真正的推荐的方法做字符串类型检查:
if isinstance(x, str):
return True
然而,因为它是如此之短,你并不真正需要未写你的函数这在所有(除了学习目的)。只需使用isinstance(x, str)
,否则你会写isString(x)
。
顺便说一句,有没有for循环在你的代码
当函数返回的东西 - 任何东西 - 它的完成。语句return
表示该函数退出;没有更多的处理。
如果x
的类型为str
,则函数返回True
。但是,如果x
的类型不是str
,则不会输入if语句,并且不返回True
。相反,该函数继续到if语句之后的下一行,即return False
- 并且函数返回False
return
语句终止该函数。一旦你回来,功能停止。
此外,Pythonic的做法是'isinstance(x,str)' – Hernan
@Hernan在Python 2.x中,通常是'isinstance(x,basestring)'这是必需的... –
@JonClements:好点。如果你想在Python 2.3 - 2.7中检查'isinstance(x,(str,unicode))',使用basestring作为快捷方式。如果你只想检查str,那么使用'isinstance(x,str)'。在Python 3.x中没有这样的区别。 – Hernan