2012-12-10 42 views
0

对于下面的代码:Python的控制流程

def isString(x): 
    if type(x)==str: 
    return True 
    return False 

当我输入一个字符串到参数,返回true后,为什么不也再返回False?我是Python的新手,我很困惑,因为我认为它会返回False,因为它不在for循环中,但它没有。

+2

此外,Pythonic的做法是'isinstance(x,str)' – Hernan

+1

@Hernan在Python 2.x中,通常是'isinstance(x,basestring)'这是必需的... –

+0

@JonClements:好点。如果你想在Python 2.3 - 2.7中检查'isinstance(x,(str,unicode))',使用basestring作为快捷方式。如果你只想检查str,那么使用'isinstance(x,str)'。在Python 3.x中没有这样的区别。 – Hernan

回答

2

答案对任何语言都是一样的。 return语句表示从函数返回,并返回一个可选值。它只能返回一次。在这种情况下,它将返回条件语句。

顺便说一句,类型检查就像使用is运算符。

if type(x) is str: 
    return True 

但事实上,真正的推荐的方法做字符串类型检查:

if isinstance(x, str): 
    return True 

然而,因为它是如此之短,你并不真正需要未写你的函数这在所有(除了学习目的)。只需使用isinstance(x, str),否则你会写isString(x)

1

顺便说一句,有没有for循环在你的代码

当函数返回的东西 - 任何东西 - 它的完成。语句return表示该函数退出;没有更多的处理。

如果x的类型为str,则函数返回True。但是,如果x的类型不是str,则不会输入if语句,并且不返回True。相反,该函数继续到if语句之后的下一行,即return False - 并且函数返回False

1

return语句终止该函数。一旦你回来,功能停止。