摘要: 为什么要用迭代器? 优点: 1,迭代器提供了一种不依赖于索引的取值方式。这样就可以便利,那些没有索引的可迭代对象了。 如:字典,集合,文件,列表,元组。 2,迭代器与列表比较,迭代器是惰性计算的,更省内存。 缺点: 1:无法获取迭代器的长度,使用不如列表,索引取值灵活。 2,一次性的,不能重复取值, 阅读全文
posted @ 2018-01-17 12:40 老王的农场 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 不改变源代码,也不改变调用方式. 1,在被装饰函数的正上方,写一个@名字。把下面的名字,当作参数。 2,独占一行 @名字 index=名字(index) 装饰器分成2种 1,无参装饰器 2,有参装饰器 装饰器的语法 #有参装饰器:函数的正常调@func(args) 阅读全文
posted @ 2018-01-16 11:47 老王的农场 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 作用域的关系,是在定义阶段确立的。 在调用阶段,不管函数返回到那个位置,到函数最原始定义的时候去找名。 闭包:内部函数包含对外部作用域,而不是全局作用域的名字的调用 1,必须是内部定义的函数的代码, 2,包含对外部作用域的引用, 3,但不是对全局作用域的引用。 闭包函数:一定是对外部作用域的引用 阅读全文
posted @ 2018-01-14 19:17 老王的农场 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 1,函数可以被赋值 2,函数当成参数传递 3,函数紧跟括号,就执行里面的代码 4,函数不带括号,拿函数的内存地址 阅读全文
posted @ 2018-01-12 12:34 老王的农场 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 一,内置名称空间 内置在python解释器内的 二,全局名称空间 文件顶头,没有任何缩进的关键字。文件全局的任何位置都能用。 三,局部名称空间 函数内部,定义一个变量。 作用域:先局部,再全局,最后内置。 不在函数内部定义的,也不是内置函数。也是属于全局空间。 例如 全局作用域:内置名称空间,全局名 阅读全文
posted @ 2018-01-08 12:20 老王的农场 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 函数: 1,解决代码重用的问题 2,统一维护 3,程序组织结构清晰,可读性强 定义函数 1,先定义,后使用。 2,最好一个功能,定义一个函数。 3, 定义无参函数 定义有参函数 定义空函数 调用函数 1,语句形式 >foo() 2,表达式形式 >res=10*my_sum(1,2) 3,函数调用做为 阅读全文
posted @ 2018-01-07 14:04 老王的农场 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 从实参角度,看*args的用法: 按位置传值,多出来的值,会被*统一接收,保存成元组的形式。并赋值给args。 *args需要放到位置参数x的后面 *args与y=1一般不会放到一起用 args=元组() *args=*(x,y,z) *当成位置参数看 **当成关键字来看 *args与位置参数用 从 阅读全文
posted @ 2018-01-07 11:52 老王的农场 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 在实参的角度: 第一种,按照位置传值 第二种,按关键字传值 第三种,混着用 问题二:对于一个形参,不能重复赋值。否则报错,例如 从形参的角度来分析 #位置参数:1, 必须传值。指的就是形参 2, 一一对应。多一个少一个都不行。 默认参数: 定义阶段,就传值,默认一个值 什么时候用默认参数?必须要注意 阅读全文
posted @ 2018-01-04 14:59 老王的农场 阅读(792) 评论(0) 推荐(0) 编辑
摘要: 自定义函数语法 先定义,后使用 无参函数:函数的执行,就是一些语句(print),通常不需要有返回值 return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。 函数的返回值 1,返回多个值的情况下,()以元组的形式返回。 ,默认为元组 2,函数的 阅读全文
posted @ 2018-01-03 15:21 老王的农场 阅读(273) 评论(0) 推荐(0) 编辑
摘要: with语句 为了避免打开文件后忘记关闭,可以通过管理上下文,即: 1 2 3 with open('log','r') as f: ... 1 2 3 with open('log','r') as f: ... 1 2 3 with open('log','r') as f: ... 1 2 3 阅读全文
posted @ 2017-12-23 12:30 老王的农场 阅读(130) 评论(0) 推荐(0) 编辑