我正在查看练习考试的答案,这是其中一个问题的建议答案:
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
此功能的目的是确定输入的单词是否是回文(从前面读取的单词与从后面读取的单词相同,例如' aza'或者' abba& #39;)' n')重复。例如,multipal('abaaba', 2)
将返回True
,但multipal('abaaba', 3)
将返回False
。
我想知道的是为什么n
在原始参数中被赋予None
并且它实际上是否影响了函数的其余部分?
答案 0 :(得分:2)
为函数参数赋值使其成为可选参数。所以你可以在调用函数时将其遗漏。在您的情况下,您可以致电multipal('babbab')
,n
将获得默认值None
(因为这是在函数定义中设置的方式)。
至于这会如何影响您的功能,只需看看n
的使用位置:
if not n:
no_repeats = len(word)/i
else:
no_repeats = n
因此,如果n
有一个假值(例如None
或0
),那么将使用第一个案例来指定动态重复计数。