摘要: 1. 原理 L:local,局部作用域,即函数中定义的变量; E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的; G:global,全局变量,就是模块级别定义的变量; B:built in,系统固定模块里面的变量,比如int, bytearray等 阅读全文
posted @ 2018-03-04 14:01 hzhang_NJU 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 1. 定义: Decorator(即装饰器)其实就是闭包实现的一个函数:把{一个待扩展功能的函数Fun}当做参数传入一个外函数Out,在外函数内部定义的内函数In“装饰扩充”Fun,然后返回In。 一句话描述:把一个函数A当参数传入另一个函数B,并返回一个函数C def Out(Func): def 阅读全文
posted @ 2018-03-04 14:01 hzhang_NJU 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 1. inner_sum便是一个闭包,他的生命周期和自由变量args一样。 def calc_sum( args): 可变参数 def inner_sum(): ix = 0 局部变量,暂存累加结果 for y in args: args是calc_sum这个外部函数的变量, 被内部函数{闭包}in 阅读全文
posted @ 2018-03-04 14:00 hzhang_NJU 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 1. 定义: 内层函数使用了外层函数作用域的变量(属于E区变量),则称内部函数为闭包。简单说就是: 外层函数里面定义了内层函数 内层函数引用了外层函数的变量(E区变量) 这不是闭包,只是函数的嵌套 def fun1(): def fun2(): print("fun2\n") return fun2 阅读全文
posted @ 2018-03-04 13:59 hzhang_NJU 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 1.原理 1.全局变量是指函数外定义的,局部是指函数体内定义的;函数内部global 定义的也是全局。 2.全局变量: 读操作:函数局部区或者全局区,均可以直接引用。(除非被局部变量屏蔽,想不被屏蔽,用global声明) 写操作:想要在函数局部区引用全局变量 1)若全局变量是dict和list (注 阅读全文
posted @ 2018-03-04 13:51 hzhang_NJU 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 2. 自定义类: | name | 说明 | 触发时机及功能 | | | | | | | 限制本类的instance的所有属性(以tuple的形式写死了,不能再定义更多的属性),但无法限制其子类| 定义实例属性时| | | 类似统计元素个数| | | | 将普通实例变成Iterable对象| for 阅读全文
posted @ 2018-03-04 13:50 hzhang_NJU 阅读(96) 评论(0) 推荐(0) 编辑
摘要: filter 定义:传入一个 与`Iterable对象I f(I(i)) True或False I(i)`。起到过滤器的功能 def is_odd(x): return (x%2 == 1) L1 = list(filter(is_odd, range(11))) filter和map类似,返回值都 阅读全文
posted @ 2018-03-04 13:46 hzhang_NJU 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 1. 常用的内建属性: | name | 说明 | 触发时机及功能 | | | | | | |对创建好的对象进行初始化| 在__new__()之后,对象属性要赋值时使用| | |创建类的对象|创建实例,为实例分配内存| | | 实例所在的类| | | | 实例的字符串表示| ,如果没有自定义 ,默认 阅读全文
posted @ 2018-03-04 13:46 hzhang_NJU 阅读(82) 评论(0) 推荐(0) 编辑
摘要: functools functools 是python2.5被引入的,一些工具函数放在此包 import functools print(dir(functools)) 偏函数 partiial function:把原函数的某些参数设为默认参数,返回一个新函数名,以简化函数调用的形式 实例1: 1. 阅读全文
posted @ 2018-03-04 13:46 hzhang_NJU 阅读(97) 评论(0) 推荐(0) 编辑
摘要: sorted 传入一个 和排序参数 命名关键字参数 {注意key参数可以传入一个 } 等价于 对每一个 都先执行 ,再拿来排序 1.普通数值型 L1 = [36,5, 12,9, 21] L1 = sorted(L1) print(L1,'\n') L1 = sorted(L1, key=abs) 阅读全文
posted @ 2018-03-04 13:45 hzhang_NJU 阅读(93) 评论(0) 推荐(0) 编辑