Python学习笔记2

来源:互联网 发布:arm-linux-gcc 编辑:程序博客网 时间:2024/05/11 18:23

1、生成器(Generator)

Python中一种一边循环一边计算的机制,就像将列表中的元素按某种算法推算出来。创建Generator就是把列表的【】变成()。直接用for循环来迭代。如果推算的算法比较复杂还可以用函数实现,函数定义中包含关键之yield时就是一个generator,而不是一个普通函数。generator函数在每次调用next()的时候执行,遇到yield语句的时候返回,再次执行时从上次返回的yield处继续执行。

工作原理是在for循环的过程中不断地计算出下一个元素,并在适当的条件(如generator的函数中有return语句或执行到函数体的最后一行)结束for循环。


2、对于编程语言,越是低级的语言就越贴近计算机,抽象程度低,执行效率高,比如C语言;越高的语言,越贴近计算,抽象程度越高,执行效率就低,如Lisp语言(MIT为研究人工智能而开发)。


3、高阶函数

将函数作为参数传入,这样的函数就是高阶函数。


4、map()有一种并行计算的意思。reduce通过函数表达式得到一个最终结果。


5、sorted(序列)---输出从小到大的顺序,sorted(序列,自定义比较函数)----按自定义规则输出结果。


6、返回函数不要引用任何循环变量,或者后续发生变化的变量


7、匿名函数

关键字lambda表示匿名函数,只能写一个表达式,不用谢return,返回值就是表达式的结果。如lambda x:x*x,表示参数为x,表达式是x*x

匿名函数可以作为一个函数的返回值


8、装饰器

传入一个函数,返回函数的高阶函数,作用:动态增加功能



9、作用域

正常函数和变量名是public,可以直接引用,如:abc、x123、PI

_xxxx_是特殊变量。可以直接引用,但是有特殊用途,如_author_, _name_

_xxxx(一个前置下划线)或__xxx(两个前置下划线)是private, 不应该直接引用(Python中没有一种方法可以完全限制访问private函数或变量。但从编程习惯上不应该引用private函数或变量)


10、创建实例的时候,必须绑定的属性强制写进去,通过定义_init_(self,属性1,属性2,...)【注:第一个参数永远是self,表示创建实例本身】,实例化的时候必须传入与_init_相匹配的参数,self不需要传。


11、class内部的属性不被外部访问,在属性名前加两个下划线“__”变成private变量。只有内部能访问;一个前置下划线的变量外部是可以访问的,但是仍然视为私有变量,外部不要去访问。


12、用dir()获取一个对象所有的属性和方法,返回一个包含字符串的list


13、_slots_变量用来限制class能添加的属性,eg:_slots_=("属性1","属性2",.....)【_slots_定义的属性仅对当前类起作用,对集成的子类是不起作用的】


14、@property广泛的应用在类的定义中,可以让调用者写出简短的代码,同时保证对参数进行必要的检查。


15、多重继承,一个子类可以有多个父类,class aaa(父类1,父类2,······)




0 0