Python 类型为'的对象;非类型';没有用于正则表达式的len()

Python 类型为'的对象;非类型';没有用于正则表达式的len(),python,Python,对于以下问题:使用regex查找以下字符串中所有名称的列表。 我编写了以下代码: import re def names(): simple_string = """Amy is 5 years old, and her sister Mary is 2 years old. Ruth and Peter, their parents, have 3 kids.""" names= re.findall(&qu

对于以下问题:使用regex查找以下字符串中所有名称的列表。 我编写了以下代码:

import re
def names():
    simple_string = """Amy is 5 years old, and her sister Mary is 2 years old. 
    Ruth and Peter, their parents, have 3 kids."""
    names= re.findall("[A-Z][a-z]*", simple_string)
    print(names)
    print(len(names))
names()
它给出如下正确的输出:
**['Amy'、'Mary'、'Ruth'、'Peter'],4**
但是,当我使用此选项时:
**assert len(names())==4,“简单字符串中有四个名称”**
它给了我这个错误:
**类型为“NoneType”的对象没有len()**
我不知道函数名中的错误在哪里,有人能帮忙吗? 注意:我无法更改assert函数,它在问题中。

names()
不返回任何内容,因此
len()
将不起作用。尝试添加
返回(名称)
。我也会避免在函数内部使用函数名作为变量名。

当您将
names()
的输出打印到
sys.stdout
时,您不会返回其中的
names
变量的值,这意味着函数本身返回
None
。将
返回名称
添加到函数末尾,以使其他代码正常工作。

您正在调用
len(names())
这是询问函数返回名称的长度。它不返回任何内容,因此您将收到非类型错误消息。

len(names)
not
len(names())
@G.Anderson我不明白这个问题是怎么回事related@jordanm因为函数隐式返回None,我假设OP试图返回函数输出的长度,而不是function@jordanm您可能会误解OP询问的问题是函数
名称
之外的内容,而不是变量
名称
不需要括号。只需返回名称就足够了。@darcamo抱歉,R语法正在潜入