本节内容 1.概述 2.生成器执行原理 3.send()和__next__()方法的区别 4.yield实现并行效果 一.概述 之前只是介绍生成器,那有些同学就说了,这个生成器除了能节省资源,提高工作效率,但是我们再哪些场景下可以用呢?在哪些地方可以体现出它的价值呢?下面我们来逐一解答这些疑问. 二.生成器执行原理 1.执行原理 1 2 3 4 5 6 7 8 9 10 11 12 13 def consumer(name):     print("%s 准备吃包子啦!"%name)…
本节内容 1.概述 2.列表生成式 3.生成器 4.函数实现生成器 5.生成器表达式 一.概述 我们在使用一组数据时,通常情况下会定义一个列表,然后循环里面的元素,但是你想过没有,如果你只需要使用列表中的1-2个元素,其他的元素用不到,这样就会造成资源的浪费,这样不能很好的合理的利用我们机器的资源,那我们如何合理高效的利用这些利用这些资源,并且提高我们程序的运行速度呢?下面我们就来讲讲我们今天最关键的知识点,生成器. 二.列表生成式 1.定义 看列表[0,1,2,3,4,5,6,7,8,9],需…
本节内容 1.简书 2.可迭代对象 3.迭代器 4.rang方法 5.总结 一.简述 我们经常使用for循环去遍历一些序列数据,但是我们有的时间发现for循环的效率很低,而且很占用了大量的硬件资源,但是有的for循环遍历效率很高,而且很节省硬件资源,这是为什么呢?有人说是生成器的原因. 二.可迭代对象 1.for循环数据类型 集合数据类型,如:list.tuple.dict.set.str.bytes(字节)等. 生成器(generator),包括生成器和带yield的生成器函数. 2.定义 可…
本节内容 1.简述 2.shelve概念 3.shelve模块使用 4.总结 一.简述 之前我们说不管是json也好,还是pickle也好,在python3中只能dump一次和load一次,不能dump多次,和load多次,但是我们真想要dump多次和load多次怎么办呢,并且能事项数据的持久化呐?好吧,今天我们就来说说这个shelve模块. 二.shelve概念 1.持久化 1 2 3 4 5 6 7 8 9 10 11 12 13 import shelve   #导入shelve模块  …
本节内容 1.背景 2.设计目录结构的好处 3.关于readme的内容 4.关于requirements.txt和setup.py 5.关于配置文件的使用方法 一.背景 "设计项目目录结构",就和"代码编码风格"一样,属于个人风格问题.所以对这种态度的人一般有两种态度: 这种个人风格问题"无关紧要".理由是能让程序work就好,风格问题根本不是问题. 规范化能更好的控制程序结构,让程序具有更高的可读性. 其实我更赞同第二种说法,因为我是前一类同学…
本节内容 1.背景 2.函数功能解释 3.绝对路径和相对路径 4.不同目录间进行模块调用 一.背景 之前写了软件开发目录规范这篇博客,相信很多人都已经知道,我们在写程序时需要遵循一定的规范,不然,就算很简答的逻辑程序的代码,读起来会很费劲,占用了我们大量的时间,但是,我们一旦用了这样的规范目录,我们怎么去愉快的进行模块之前的相互导入呢?这就不得不说我们今天讨论的两个概念:绝对路径和相对路径. 二.函数功能解释 1.__file__ 功能:返回自身文件的相对路径 1 2 3 4 5 6 7 8 9…
本节内容 1.概述 2.装饰器定义 3.装饰器定义 4.带参数的生成器 一.概述 我们之前介绍了大幅片的内容,感觉跟装饰器半毛钱关系都没有,其实不然,我们分别详细阐述了高阶函数和内置函数,下面我们就来讲讲什么是真正的装饰器. 二.装饰器定义 首先装饰器实现的条件:高阶函数+嵌套函数 =>装饰器 1.定义 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 import time   #定义内置函数 def timmer(f…
本节内容 定义 原则 实现装饰器的储备知识 函数及变量 高阶函数 一.定义 1.装饰器:本质是函数. 2.功能:用来装饰其他函数,顾名思义就是,为其他的函数添加附件功能的. 二.原则 不能修改被装饰函数的源代码 不能修改被装饰函数的调用方式 装饰器为什么会有这两个原则呐?因为如果你写的这个程序在生产环境下已经运行了,如果修改别人的源代码或者修改别人的调用方式,那么出了问题,后果可想而知,所以我们要牢记上面两个原则. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 def log…
本节内容 嵌套函数 局部作用域和全局作用域的访问顺序 一.嵌套函数 1.定义 在一个函数的函数体内,用def 去声明一个函数,而不是去调用其他函数,称为嵌套函数. 1 2 3 4 5 6 7 8 9 10 11 12 def foo():     print("in the foo")     def bar():  #在foo函数体内,用def声明一个函数         print("in the bar")       bar() #调用foo函数 foo()…
本节内容 作用域.局部和全局变量 递归 函数式编程 高阶函数和eval()函数 一.概述 在函数内部,可以调用其他函数.但是一个函数在内部调用自身,这个函数被称为递归函数. 二.简单介绍 那递归具体是怎么实现的呐?下面我们就来看看如下代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 def calc(n):     print(n)     if int(n/2) == 0:  #结束符         return n     return calc(int(n/…