Skip to main content
 Web开发网 » 编程语言 » Python语言

Python next函数实际操作教程(转载)

2021年11月26日5470百度已收录

  Python next函数在实际使用的时候有不少的问题需要我们学习。相关的技术需要不断学习才能更好的掌握。下面就向大家介绍下有关于Python next函数的具体使用情况。

  下面给出一个用iterator的实现,一个CharBufReader类,封装了buf,对外提供一次读取一个byte的接口(内部实现从buf读取,buf读完再fill buf)。这样代码好复用。

  因为提供Python next函数,所以可以用iterator访问。但是效率上很慢,和以前不优化,用file.read(1)差不多90s左右的时间。可以看出就是主要是因为函数调用造成了原来程序速度慢。而不是因为不用自己写的缓冲读文件时间长。

  1.class CharBufReader(object):

  2.def __init__(self, mfile, bufSize = 1000):

  3.self.mfile = mfile

  4.#self.bufSize = 64 * 1024 #64k buf size

  5.self.capacity = bufSize

  6.self.buf = '' #buf of char

  7.self.cur = len(self.buf)

  8.self.size = len(self.buf)

  9.def __iter__(self):

  10.return self

  11.def next(self):

  12.if self.cur == self.size:

  13.#if self.cur == len(self.buf):

  14.#if self.cur == self.buf.__len__():

  15.selfself.buf = self.mfile.read(self.capacity)

  16.self.size = len(self.buf)

  17.if self.size == 0:

  18.raise StopIteration

  19.self.cur = 0

  20.self.cur += 1

  21.return self.buf[self.cur - 1]

  22.class Compressor():

  23.def caculateFrequence(self):

  24."""The first time of reading the input file and caculate each

  25.character frequence store in self.dict

  26."""

  27.self.infile.seek(0)

  28.reader = compressor.CharBufReader(self.infile)

  29.for c in reader:

  30.if c in self.dict:

  31.self.dict[c] += 1

  32.else:

  33.self.dict[c] = 0

  以上就是对Python next函数的详细介绍,希望大家有所收获。

  本文源自:/

评论列表暂无评论
发表评论
微信