提升:
梯度提升
提升:
梯度提升
类方法:从属于“类对象”的方法,格式如下:
@classmethod
def 类对象(cls,[,形参列表]):
函数体
要点如下:
(1)@classmathod必须位于方法上面一行
(2)第一个cls必须有;cls指的就是“类对象”本身;
(3)调用类方法格式:“类名.类方法名(参数列表)”,不需要给cls传值。
类对象
实例方法(从属于实例对象)
def 方法名(self,[形参列表]):
函数体
实例属性:从属于实例对象,也成为实例变量。
(1)实例属性一般在__init__()方法中通过如下代码定义:
self.实例属性名=初始值
(2)在本类的其他实例方法中,也是通过self进行访问:
self.实例属性名
(3)创建实例对象后,通过实例对象进行访问:
obj01=类名() #创建对象,调用__init__()初始化属性
obj01.实例属性名=值 #可以给已有属性赋值,也可以新加属性
构造函数__init__():初始化实例对象的实例属性。
Python对象包含三个部分=id、type、value
只要是类中的方法参数第一个都是self,通过类名()来调用构造函数
对象的进化
面向对象
Python支持面向过程、面向对象、函数式编程等多种编程范式。
LEGB规则
Local:函数或者类的方法内部
nonlocal关键字
nonlocal 用来声明外部的局部变量
global 用来声明全局变量
嵌套函数:在函数内部定义的函数
递归函数:在函数体内直接或者间接的自己调用自己。
(1)终止条件:表示递归什么时候结束,一般用于返回值,不再调用自己。
(2)递归步骤:把第n步的值和第n-1步相关联。
eval()函数
lambda表达式和匿名函数
基本语法:
lambda arg1,arg2,arg3...:<表达式>
可变参数(一个*为元组,**为字典)
强制命名参数(当带星号的“可变参数”后面增加新的参数,必须是强制命名参数)
参数的几种类型
位置参数
默认值参数
命名参数
传递不可变对象:浅拷贝
浅拷贝和深拷贝
浅拷贝:不拷贝子对象的内容,只拷贝子对象的引用。
深拷贝:会连子对象的内存全部拷贝一份,对子对象的修改不会影响源对象。
传递不可变对象
不可变对象:int、float、字符串、元组、布尔值
在赋值操作时会创建一个对象。
参数的传递:从实参到形参的赋值操作。
所有的赋值操作都是”引用的赋值“,Python中参数的传递都是“引用传递”,不是“值传递”。
可变对象:字典、列表、集合、自定义的对象