對於下面的代碼: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