python高级特性

python高级特性

iteration迭代

对list,tuple的遍历被称为迭代。对list实现类似Java那样的下标循环怎么办?Python内置的enumerate函数可以把一个list变成索引-元素对

>>> for i, value in enumerate(['A', 'B', 'C']):
...     print(i, value)

iterator迭代器

凡是可作用于for循环的对象都是Iterable类型;凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列。集合数据类型如listdictstr等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。

>>> isinstance(iter([]), Iterator)
True

Python的for循环本质上就是通过不断调用next()函数实现的。循环有for inwhile,迭代只能用for in

受到内存限制,列表容量肯定是有限的。generator生成器,属于iterator。生成方法:

g = (x * x for x in range(10))

函数定义中包含yield关键字, 用next(g)for n in g获取值。想要拿到返回值,必须捕获StopIteration错误,返回值包含在StopIteratione.value中。

python并发

python multiprocessing模块封装了多进程和多线程,其中multiprocessing.Pool对应多进程,multiprocessing.dummy.Pool对应多线程。两者用法一致,以下是多线程的用法,其中args为元组格式,Iterable为可迭代对象:

from multiprocessing.dummy import Pool

pool=Pool(count)
for i in range(count):
    pool.apply_async(func, args=tuple)
pool.close()
pool.join()

from multiprocessing.dummy import Pool

pool = Pool(count)
pool.map(func, Iterable)

异常

unable to find vcvarsall.bat

解决办法参考:

http://www.cnblogs.com/youxin/p/3159363.html
http://blog.csdn.net/secretx/article/details/17472107
Microsoft Visual C++ Compiler for Python 2.7
http://aka.ms/vcpython27

你可能感兴趣的:(python高级特性)