文件读取返回对象类型的生成器函数作为常规函数

Generator function for file reading returning object type as regular function

我正在尝试创建一个生成器函数来逐行 return .csv 文件的内容,而生成器函数似乎是可迭代的,我可以用 for 循环遍历它循环,当我打印生成器函数的对象类型时,不是 returning class 'generator',而是 returns class 'function'。生成器函数也有一个内存大小与它是一个生成器函数一致。

函数代码:

    import sys, time
    
    start_time = time.time()
    def file_row_generator():
        for row in open('file.csv'):
            yield row
    print(file_row_generator)
    print(type(file_row_generator))
    print(sys.getsizeof(file_row_generator))
    l = []
    for row in file_row_generator():
        l.append(row)
    print(time.time() - start_time)

这 return 的输出:

<函数 file_row_generator 在 0x00F3BC40>

68

0.05980682373046875

file_row_generator 是一个函数,returns 是一个生成器。试试 print(file_row_generator()).

>>> def foo():
...     for i in range(3):
...             yield i
... 
>>> print(foo)
<function foo at 0x7fd3cedaa310>
>>> print(foo())
<generator object foo at 0x7fd3ced88660>