高级语言python-2 11.20

2017-11-20  本文已影响0人  a荷包蛋

(一):属性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

上一篇 下一篇

猜你喜欢

热点阅读