1.迭代器和生成器
1 | L = [x*x for x in range(10)] |
通过列表生成式,可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含百万元素的列表,不仅是占用很大的内存空间,如:我们只需要访问前面的几个元素,后面大部分元素所占的空间都是浪费的。因此,没有必要创建完整的列表(节省大量内存空间)。在Python中,我们可以采用生成器:边循环,边计算的机制—>generator
###大数据的文件读取1
2
3with open(path,'rb') as file:
for line in file:
print(file)
###yield语句的用法
相当于给函数运行打断点,下次循环或者调用时在这里终止程序
yield简单说来就是一个生成器,这样函数它记住上次返 回时在函数体中的位置。对生成器第 二次(或n 次)调用跳转至该函树)调用跳转至该函数。
21 *args and **kwargs
用*args和**kwargs只是为了方便并没有强制使用它们.
当你不确定你的函数里将要传递多少参数时你可以用*args.例如,它可以传递任意数量的参数:
1 | def print_everything(*args): |
相似的,**kwargs允许你使用没有事先定义的参数名:
1 | def table_things(**kwargs): |
你也可以混着用.命名参数首先获得参数值然后所有的其他参数都传递给*args和**kwargs.命名参数在列表的最前端.例如:
1 | def table_things(titlestring, **kwargs) |
*args和**kwargs可以同时在函数的定义中,但是*args必须在**kwargs前面.
当调用函数时你也可以用*和**语法.例如:
1 | def print_three_things(a, b, c): |