为变量分配无的目的

时间:2015-11-15 01:04:34

标签: python if-statement nonetype

我正在查看练习考试的答案,这是其中一个问题的建议答案:

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并且它实际上是否影响了函数的其余部分?

1 个答案:

答案 0 :(得分:2)

为函数参数赋值使其成为可选参数。所以你可以在调用函数时将其遗漏。在您的情况下,您可以致电multipal('babbab')n将获得默认值None(因为这是在函数定义中设置的方式)。

至于这会如何影响您的功能,只需看看n的使用位置:

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

因此,如果n有一个假值(例如None0),那么将使用第一个案例来指定动态重复计数。