Python中的re.search(pattern,stringOfText)返回什么数据类型?整数还是字符串?

Python中的re.search(pattern,stringOfText)返回什么数据类型?整数还是字符串?,python,string,re,Python,String,Re,考虑下面的代码。有人告诉我,如果regExMagic()在文本字符串中找不到Lucy的匹配项,它将向regExMagic()返回“None”。既然“None”已经是一个字符串,为什么在下面的比较中我们仍然需要将regExMagic()包装在str()中 有趣的是,当我删除str()时,它只对每一行(下图)执行else语句(这里没有看到),并且它没有抛出任何TypeError异常,我试图比较两种不同的类型,假设一个int可以返回给regExMagic()。但是因为只有else被执行了,那么它可能根

考虑下面的代码。有人告诉我,如果regExMagic()在文本字符串中找不到Lucy的匹配项,它将向regExMagic()返回“None”。既然“None”已经是一个字符串,为什么在下面的比较中我们仍然需要将regExMagic()包装在str()中

有趣的是,当我删除str()时,它只对每一行(下图)执行else语句(这里没有看到),并且它没有抛出任何TypeError异常,我试图比较两种不同的类型,假设一个int可以返回给regExMagic()。但是因为只有else被执行了,那么它可能根本就不需要抛出异常

所以我的主要问题是,为什么我们需要在这个例子中包括str(),即使我被告知regExMagic()返回“None”

我是不是遗漏了什么

import re

def regExMagic(pattern, string):
    objectMatch = re.search(pattern, string)
    return objectMatch

def readingLinesWithRegEx():

    try:
        with open('people.txt') as file_object:
            contents = file_object.readlines()

            for line in contents:
                pattern = 'HEllo$'

                if str(regExMagic(pattern, line)) == "None":
                    print(line)

它返回值
None
(其类型为
NoneType
),而不是字符串
“None”
。因此,如果您想将其与字符串进行比较,则必须将其转换

但直接比较比较比较简单,无需转换:

if regExMagic(pattern, line) is None:
    print(line)
您也可以只测试真值,因为它返回的任何其他值都将是非假对象。所以只要写下:

if not regExMagic(pattern, line):
    print(line)

这很容易找到:
print(键入(您的_变量))
请浏览和,了解该网站的工作原理,帮助您改进当前和未来的问题,这可以帮助您获得更好的答案。在这里,您发布了一个您应该自己回答的问题,只需检查返回值的类型即可。print(type(regExMagic(pattern,line)))显示为“NoneType”,这解释了为什么必须使用str()才能将其与“None”进行比较。感谢您澄清巴尔马!谢谢现在一切都有意义了。我对NoneType感到困惑,因为我以前从未使用过它。它类似于PHP和JavaScript中的
null