高级语言python-2 11.20
(一):属性property
1.私有属性添加getter和setter
2,用property升级get set
注意property里参数的位置不能颠倒()
3.用property取代get set
注意代码的顺序先get 后set
(二)生成器
定义:简单的说生成器就是一种,当你需要生成100多万个值时(或者更多),他可以一个一个帮你获取到,不会让你一下子拿到那么多,白白的浪费内存空间,每次可以用next向下取值。主要就是不浪费资源,如果你用python2的话,一下子取那么多值就在一直运行,容易死机
缺点:不能指定位置访问
有三种方法:
第一种方法:只要把一个列表生成式的[ ]改成( )
第二中方法:推算的算法比较复杂,用类似列表生成式的for循环无法实现的时候, 还可以用函数来实现。
第三种方法:用send实现动态方法
注意生成器第一次打印不会调用函数,所以必须调用一次在用send,传值
yield i就近似相当于pe,然后pe=ret。-------所以可以传值
(三)迭代器
注意:迭代器指针运行一次,向后偏移一位直到所有的元素被访问完结束
把可迭代但不是迭代器的升级为迭代器 iter( )
(四)闭包
闭包:原来局部变量在用完的时候就会被垃圾机制回收,用闭包之后可保存下来,继续使用
定义:在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包
(五)装饰器
简单地说装饰器就是在不改变原来的代码(也就是不违背开闭原则)的基础上,拓展原来代码的功能。其实可以结合父类子类这样会更好理解
多层装饰器
注意:出现多层时,程序运行的时候先运行第二个装饰器。然后把第二个整体作为参数传给第一个装饰器。打印的时候按顺序来
装饰器示例:
无参函数:
有参函数:
装饰器中的return
不加return,接收不到函数里的返回值,一般要加return
加return