2012-12-10 39 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語句終止該函數。一旦你回來,功能停止。