一.递归调用定义 在函数内部,可以调用其他函数. 如果在调用一个函数的过程中直接或间接调用自身本身,则称为递归调用 从某种意义上来说,递归调用可以实现无限循环 二.递归调用的特性 必须有一个明确的结束条件 每次进入更深一层递归时,问题规模相比上次递归都应有所减少 递归效率不高,递归层次过多会导致栈溢出 在计算机中,函数调用是通过栈(stack)这种数据结构实现的 每当进入一个函数调用,栈就会加一层栈帧 每当函数返回,栈就会减一层栈帧 由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出…
吧啦吧啦内心戏 在没有具体学作用域之前,我在之前的学习笔记中就有提到 我开始以为是自己自创的词儿 没想到这个词早已经存在(手动捂脸) 真是个无知的小火锅(不知者无罪) 我发现自己最擅长做的事情,就是给自己找个台阶,然后很快顺势滑下来 一.作用域 先来一段代码分析一波吧 name = 'xhg' def name1(): name = 'aa' def name2(): name = 'bb' print(name) return name2 a = name1() print(a) a() #执…
生成器的一些补充 接着下鸡蛋和吃包子! 补充一:生成器只能遍历一次 (总是把生成器比喻成母鸡下鸡蛋,需要一个下一个,首先是下出来的鸡蛋不能塞回母鸡肚子里,其次是一个母鸡一生只能下一定数量的鸡蛋,下完了就死掉了) #通过程序来理解什么意思 #程序一: def test(): for i in range(2): yield i t = test() for i in t: print(i) t1 =(i for i in t) print(list(t1)) #执行结果 0 1 [] #程序分析…
一.map()函数 map()是 Python 内置的高阶函数 有两个参数,第一个是接收一个函数 f(匿名函数或者自定义函数都OK啦):第二个参数是一个 可迭代对象 功能是通过把函数 f 依次作用在 第二个参数 的每个元素上,得到一个新的 list 并返回.(新的 list 元素的个数与位置与旧的 list 一致) 实质就是内部 for 循环,遍历迭代对象的每一个元素 例如,我们现在有一个需求,对于一个 list num_1 = [1, 2, 3, 4] 如果希望把list的每个元素都作平方,就…
写在前面: 昨天早睡之后,感觉今天已经恢复了百分之八十的样子 又是活力满满的小伙郭 今日份鸡汤: 我始终相信,在这个世界上,一定有另一个自己,在做着我不敢做的事,在过着我想过的生活.-------宫崎骏 函数 一.函数出现的背景 在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,其往往用一长段代码来实现指定功能,开发过程中最常见的操作就是粘贴复制,也就是将之前实现的代码块复制到现需功能处,如下: while True: if cpu利用率 > 90%: #发送邮件提醒 连…
写在前面: 第二天的学习,感觉比昨天学习相对轻松一些,但是对于我这个编程语言功底很弱的人来说,还是稍稍微有些.....哈尔滨的天气一天天冷了下来,还飘着小雨,不过还是挺有意境的.充实而又忙碌的生活,让我觉得幸福感十足.每天上午看视频学习,下午总结.自己练习.今日份的鸡汤,所有看上去厉害的事情都是由一件件不起眼的小事构成的呢!加油啦 一.Python 学习及开发环境(pycharm)安装与配置 视频讲课老师说这个很好用,至于安装很简单,就是去 http://www.jetbrains.com/py…
装饰器 一.装饰器的本质 装饰器的本质就是函数,功能就是为其他函数添加附加功能. 利用装饰器给其他函数添加附加功能时的原则: 1.不能修改被修饰函数的源代码        2.不能修改被修饰函数的调用方式 举例:计算以下一段程序执行时间 #程序:计算0—19的和 def cal(l): res = 0 for i in l: res += i return res print(cal(range(20))) #给上述程度增加时间模块 import time def cal(l): start_t…
一.什么是生成器? 生成器可以理解成是一种数据类型,特殊地是生成器可以自动实现迭代器协议其他的数据类型需要调用自己内置的__iter__方法所以换种说法,生成器就是可迭代对象 !回忆:很重要的迭代器协议 对象必须提供一个 next 方法,执行该方法要么返回迭代中的下一项,要么就引起一个Stoplteration异常,以终止迭代(只能往后走不能往前退) 二.生成器的分类(两类) python中生成器的表现形式 python中提供生成器的方式 一类是生成器函数:另一类是生成器表达式 第一类:关于生成…
迭代器 1.迭代器协议 对象必须提供一个 next 方法,执行该方法要么返回迭代中的下一项,要么就引起一个Stoplteration异常,以终止迭代(只能往后走不能往前退) 2.可迭代对象 实现了迭代器协议的对象(如何实现:对象内部定义一个_iter_()方法) 协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如 for循环,sum,min,max函数等)使用迭代器协议访问对象 3.关于for循环机制 for循环的本质:循环所有对象,全都是使用迭代器协议 思考:for 循环的…
打开文件的模式(二) 对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码.图片文件的jgp格式.视频文件的avi格式) rb:   以字节方式读文件 wb: 以字节方式写文件ab: 以字节方式追加文件 注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,所以不能指定编码 1. rb #错误举例 f = open ('test1.py', 'rb', encoding = 'utf…