摘要:
python参数 关键字参数和默认值 默认值又叫位置参数 下面实例中 ("李宁") 是位置参数,(greeting="hello") 是关键字参数 实例 def greet(name,greeting): return "问候语:{} 姓名:{}".format(greeting,name) print(greet("李宁",greeting="hello")) E:\py... 阅读全文
摘要:
生成器 如果说迭代器是以类为基础的单位产生器,那么生成器(generator)就是以函数为基础的单位产生器。也就是说,迭代器和生成器都是一个值一个值得生产,每迭代一次,只能得到一个值, 所不同的是,迭代器需要在类中定义__iter__和__next__方法,在使用时需要创建迭代器的实例。而生成器是通过一个函数展现的,可以直接调用, 所以从某种意义上来说,生成器在使用上更简洁。 创建称生... 阅读全文
摘要:
迭代器和生成器的区别 如果说迭代器是以类为基础的单位产生器,那么生成器(generator)就是以函数为基础的单位产生器。也就是说,迭代器和生成器都是一个值一个值得生产,每迭代一次,只能得到一个值, 所不同的是,迭代器需要在类中定义__iter__和__next__方法,在使用时需要创建迭代器的实例。而生成器是通过一个函数展现的,可以直接调用, 所以从某种意义上来说,生成器在使用上更简洁。... 阅读全文
摘要:
迭代器 为什么要用迭代器 为什么不使用列表而使用迭代器,列表可以获取列表长度,然后使用变量i对列表索引进行循环,而且容器理解,也可以获取集合的所有元素。 没错,使用列表的代码是容易理解也很好操作,但这是要付出代价的。列表之所以可以用索引来快速定位其中的任何一个元素,是因为列表是一下子将所有的数据都装在在内存中, 而且是一块连续存在的空间。当数量比较小时,实现比较容易;当数据量大时,会非常... 阅读全文
摘要:
异常处理 什么是异常 当遇到错误后,会引发异常。如果异常对象没有处理异常,或未步捕捉异常,程序就会终止执行,并向用户返回异常信息。通常异常信息会告知错误的代码行以及其他有助于定位 错误的信息,以便程序员可以快速定位有错误的代码 主动抛出异常 raise Exception 实例: raise Exception("这是自己主动抛出的一个异常") 捕捉异常 如果异常未捕捉,... 阅读全文
摘要:
测试 使用Flak8检测python代码的错误和警告 pip install flake8 flake8 test.py 实例: [root@test3 ~]# flake8 test.py test.py:4:1: E302 expected 2 blank lines, found 1 test.py:9:1: E302 expected 2 blank lines, found... 阅读全文
摘要:
python多线程使用场景 如果程序时cpu密集型的,使用python的多线程是无法提升效率的,如果程序时IO密集型的,使用python多线程可以提高程序的整体效率 CPU密集型(CPU-bound) CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/内存), I/O在很短... 阅读全文
摘要:
CPU密集型(CPU-bound) CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/内存), I/O在很短的时间就可以完成,而CPU还有许多运算要处理,CPU Loading很高。 IO密集型(I/O bound) IO密集型指的是系统的CPU性能相对硬盘、内存要好很多,... 阅读全文
摘要:
实例:#定义一个生成器 def mygGenerator(): numList=[1,2,3,4,5,6,7,8] for num in numList: #yield 语句会冻结当前函数,并提交当前要生成的值(本例是num) yield num #对迭代器进行迭代 for num in mygGenerator(): print(... 阅读全文
摘要:
1、python多线程 多线程可以把空闲时间利用起来 比如有两个进程函数 func1、func2,func1函数里使用sleep休眠一定时间,如果使用单线程调用这两个函数,那么会顺序执行这两个函数 也就是直到第一个函数执行完后,才会执行第二个函数,这样需要很长时间; 如果使用多线程,会发现这两个函数是同时执行的,这是因为多线程会把空闲的时间利用起来,在第一个函数休眠的函数就开始执行第二个... 阅读全文