2015-11-15 53 views
0

我一直在尋找答案的實踐考試,這是對的問題一個建議的回答:目的向無變量

def multipal(word,n=None): 
    for i in range(len(word)): 
     if word[:i] == word[i-1::-1]: 
      repeat = word[:i] 
      if not n: 
       no_repeats = len(word)/i 
      else: 
       no_repeats = n 
      if word == repeat * no_repeats: 
       return True 
    return False 

該功能的目的是確定是否輸入字是一個迴文(從前面讀取的一個詞,和從後面讀取的一個詞,例如'n''重複')。例如,multipal('abaaba', 2)將返回True,但multipal('abaaba', 3)將返回False


我想知道的是爲什麼n在原始參數分配None和它實際上影響功能的休息嗎?

回答

2

將某些內容分配給函數參數使其成爲可選參數。所以你可以在調用該函數時將其忽略掉。在你的情況下,你可以撥打multipal('babbab')n將得到默認值None(因爲這是它在功能定義中的設置)。

至於如何影響你的函數,只要看看在使用n

if not n: 
    no_repeats = len(word)/i 
else: 
    no_repeats = n 

所以,如果n有falsish值(例如None,或0),那麼第一種情況下將使用哪個分配一個動態重複計數。