将 None 赋值给变量的目的

Purpose of assigning None to variables

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

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') 'n' 次重复。例如,multipal('abaaba', 2) 将 return Truemultipal('abaaba', 3) 将 return False.


我想知道的是为什么 n 在原始参数中被赋值为 None 并且它实际上会影响函数的其余部分吗?

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

至于这对你的功能有什么影响,看看n用在什么地方:

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

因此,如果 n 有一个假值(例如 None,或 0),那么将使用第一种情况,它分配一个动态重复计数。