0
def word_to_syllable(w,li=[]):
if not w:
return li
pattern = """
########
"""
pattern = re.sub("C","[^aeiou]",pattern)
pattern = re.sub("V","[aeiou]",pattern)
match = re.findall(pattern,w,re.VERBOSE)[0]
#print(li)
li.append(match)
w = w[len(match):]
return word_to_syllable(w,li)
這對於第一個電話工作好,但隨後局部變量li
不知何故沒有被人遺忘,新價值只是附加到舊的 - 而不是字符串,作爲函數的名稱所暗示的,被分割到它的自己的名單。是的,如果我在沒有默認參數的情況下定義我的函數,而是在調用後面說它是空列表,那麼一切都很好,但我很好奇上面這段代碼究竟發生了什麼。爲什麼局部變量在這種情況下被「記住」?
那麼,你可以使用它,它會工作,也許不像預期的那樣。 – fjarri
@Bogdan對,澄清。 –
感謝您的回答,併爲鏈接。 「一旦你思考這種方式,那麼它就完全有意義:函數是一個正在被定義的對象;默認參數是」成員數據「,因此它們的狀態可能會從一個調用改變到其他 - 與其他任何對象一樣「(從那裏的最佳答案,很好的解釋!) – user2921960