这是功能:
def genWords():
global wordsList; global current_char; global char_seq_cords; global current_sequence
current_sequence = "%s%s" % (current_sequence, getChar(current_char))
testable_prefixes = map( lambda x: ["%s%s" % (current_sequence, getChar(x)), x], possible_chars() )
valid_seqs = filter(lambda x: linguisticly_possible_seq(x[0]),
testable_prefixes) # 2 length list with char seq and char cords second
for i in valid_seqs:
if (u"%s" % current_sequence).lower() in english_tree:
wordsList.append(current_sequence)
current_char = i[1]
char_seq_cords.append(current_char)
genWords()
if not valid_seqs:
wordsList.append(current_sequence)
return wordsList
print genWords()
print wordsList
我希望print genWords()
的输出是一个列表,而不是None
。我很困惑的原因是因为最后一行print wordsList
打印出预期的输出;另外,如果我在print wordsList
之前插入此行return wordsList
,我会再次获得预期的输出。我似乎无法弄清楚为什么函数返回None?
这里的src如果你需要参考: https://docs.google.com/document/d/1okYiW3jIkZF8HDwpU5Efx32HHkl1hlqcFj0lP6Io0oY/edit?usp=sharing
答案 0 :(得分:2)
如果符合valid_seqs
条件,您只能到达return语句(从而返回您的单词列表)。
否则,函数"只返回",默认为None
值。
请注意,在这种情况下,返回的内容不是您的空列表(肯定不等同于None
)。相反,如果您没有指定其他返回值,则None
是每个函数都会返回的内容。
答案 1 :(得分:1)
if not valid_seqs
是空列表, False
将返回valid_seqs
。 gen_words
返回None
,因为如果valid_seqs
为空,您尚未定义任何返回值。