将 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 True
但 multipal('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
),那么将使用第一种情况,它分配一个动态重复计数。
我正在查看练习考试的答案,这是其中一个问题的建议答案:
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 True
但 multipal('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
),那么将使用第一种情况,它分配一个动态重复计数。