Python 这是怎么回事?

Python 这是怎么回事?,python,function,matplotlib,Python,Function,Matplotlib,因此,我试图理解matplotlib.mlab中csv2rec的源文件。它用于获取csv文件并将数据解析为特定格式。因此,它可以使用字符串“234”并将其转换为int。或者使用日期字符串并将其转换为python日期时间 def get_converters(reader): converters = None for i, row in enumerate(reader): if i==0: converters = [mybool]*l

因此,我试图理解matplotlib.mlab中csv2rec的源文件。它用于获取csv文件并将数据解析为特定格式。因此,它可以使用字符串“234”并将其转换为int。或者使用日期字符串并将其转换为python日期时间

def get_converters(reader):

    converters = None
    for i, row in enumerate(reader):
        if i==0:
            converters = [mybool]*len(row)
        if checkrows and i>checkrows:
            break
        #print i, len(names), len(row)
        #print 'converters', zip(converters, row)
        for j, (name, item) in enumerate(zip(names, row)):
            func = converterd.get(j)
            if func is None:
                func = converterd.get(name)
            if func is None:
                #if not item.strip(): continue
                func = converters[j]
                if len(item.strip()):
                    func = get_func(name, item, func)
            else:
                # how should we handle custom converters and defaults?
                func = with_default_value(func, None)
            converters[j] = func
    return converters
我对这个函数的问题是“转换器”。它以“无”开头。然后后面的'func=converters[j]'j我知道是一个刚刚通过枚举创建的数字。因此,它正在寻找由j索引的相应转换器项。但在转换器中没有任何东西,因为它是不正确的?除非python程序不必自上而下地读取?在这种情况下,我们从接下来的两行“if len(item.st…etc)”或“else:”部分获取func。但是,我只是假设它必须从上到下阅读

我不知道其他事情是否重要,所以我只包含了整个函数。converterd是一个字典映射,我相信用户可以提供一个参数来自动查找转换器。checkrows只是用户在开始检查有效性时作为参数提供的数字。默认情况下为“无”。我还是个初学者,仅供参考。=)


谢谢大家。这个网站太有用了

除非我遗漏了什么,否则在第一次迭代中,“I”是0,因此执行以下操作:

converters = [mybool]*len(row)
converters = [mybool]*len(row)

这会初始化“converters”

除非我遗漏了什么,在第一次迭代中,“I”是0,所以执行以下操作:

converters = [mybool]*len(row)
converters = [mybool]*len(row)

这将初始化“转换器”

转换器将在循环开始时使用

if i==0:
  converters = [mybool]*len(row)

因此,在这之后,它就不再是空的了。

转换器在循环开始时再次设置为

if i==0:
  converters = [mybool]*len(row)
所以在那之后它就不再是空的了。

首先

converters = None
设置转换器的初始值。这样,如果迭代没有发生(因为
读卡器
可能为空),那么当函数返回
转换器
时,它将存在并具有值

如果在
读卡器
上进行迭代,则在迭代的第一次过程中,
转换器
立即重置为更有意义的值(当
i==0
时):

首先,

设置转换器的初始值。这样,如果迭代没有发生(因为
读卡器
可能为空),那么当函数返回
转换器
时,它将存在并具有值

如果在
读卡器
上进行迭代,则在迭代的第一次过程中,
转换器
立即重置为更有意义的值(当
i==0
时):