苏州建站网站,wordpress 主题功能,网上制作名片,怎么做网页机器人一、匿名函数 和函数的作用一致#xff0c;都是进行代码逻辑的封装#xff0c; 区别1 在定义时#xff0c;匿名函数可以不指定函数的名字 区别2 匿名函数执行实现简单的计算 区别3 匿名函数会自动将计算的结果返回 定义格式
lambda 参数1,参数2...:计算逻辑(参数的处理逻辑…一、匿名函数 和函数的作用一致都是进行代码逻辑的封装 区别1 在定义时匿名函数可以不指定函数的名字 区别2 匿名函数执行实现简单的计算 区别3 匿名函数会自动将计算的结果返回 定义格式
lambda 参数1,参数2...:计算逻辑(参数的处理逻辑)
# 匿名函数的使用
# 加法计算功能
def add(a,b):data abreturn data
res add(12,15)
print(res)
# 使用匿名函数实现
# 定义匿名函数时需要指定一个变量接收
f lambda a,b:ab
# 使用变量调用匿名函数
print(type(f))
res2 f(20,30)
print(res2) 使用场景 1-进行简单的数据计算 2-匿名函数当成参数进行传递实现对数据的处理
# 匿名函数成参数使用
rdd [1,2,3,4,5,6]
def reduce(f): # f lambda a,b:ab# f参数 接收一个累加计算的函数计算的函数# 实现数据的遍历过程init 0for i in rdd:# 遍历数据时进行数据的sum求和# 实际的pyspark开发中sum求和的计算不在reduce中实现由开发人员自己编写计算逻辑# init initiinit f(init,i)return init
# 开发人员在调用reduce函数编写数据的累加计算逻辑
res reduce(lambda a,b:ab)
print(res) 二、面向对象介绍
2-1 面向对象和面向过程开发 程序开发时有两种编程思想 面向过程 侧重点是过程 按照一定的顺序步骤完成对某一特定问题的处理 如何将大象放入冰箱中 1-打开冰箱门 2-将大象放入冰箱 3-关上冰箱门 如何将老虎放入冰箱中 1-打开冰箱门 2-将老虎放入冰箱 3-关上冰箱门 如何将狮子关在笼子中 1-打开笼子门 2-将狮子赶入笼子中 3-关上笼子门 面向过程需要针对某一类问题需要重复编写代码 面向对象 侧重点在对象 将一类问题进行归纳总结按照一个统一标准处理同一类问题 如何将一项物品放入一个空间内? 物品是什么和空间是什么 处理的数据 处理方式(动作) 函数功能 打开 关闭 将一类问题分析后的内容进行类的创建归纳过程 针对类进行创建对象对象是什么有数据本身决定 数据是大象对象就是一个大象对象 大象的处理方式可以通过函数实现 面向过程的开发 比较简单快捷但是需要重复编写代码 面向对象的开发 开发较复杂需要考虑一类问题的处理可以重复利用代码不需要针对每个问题重复写代码 2-2 面向对象开发的三大特性 封装 对问题的归纳总结封装为一个类 继承 对已经封装的类进行继承在原来类的基础上可以再次增加新的内容 人类的操作 性别年龄地址。。 上班 学习 吃饭 继承人类 原来的数据和行为都会被继承下来 性别年龄地址,手机号收入 上班 学习 吃饭 睡觉 玩游戏 多态 同一个方法实现不同的操作 吃饭 吃炒饭 吃炒面 吃盖浇饭 面向对象的特性中主要使用的是封装 继承和多态可以根据实际需求选择使用 三、类的构成 面向对象开发的流程 1-封装一个类 2-使用类创建一个对象 在封装一个类的时候需要指定 数据和行为(数据的处理方法) 数据可以通过变量进行定义在类中不叫变量称为属性 行为可以通过函数进行定义在类中称为方法 格式 关键字 class
class 类名:属性name 张三方法def eat(self):def paly_game(self):
# 调用类创建对象
object 类名() # 当前对象就是张三
# 执行某个行为
object.eat()
object.paly_game() 本质 就是将变量和函数再次封装在一个类中 # 类的定义
# 原来类的定义方式
class Student:# 类属性name Noneage None
# 方法def func(self):print(方法)# 处理属性数据print(self.name)print(self.age)
# 使用类创建对象
s_obj Student()
# 使用对象对数据进行赋值
s_obj.name 张三
s_obj.age 20
# 创建多个对象
s_obj2 Student()
s_obj2.name 李四
s_obj2.age 20
# 使用类的方法进行数据处理
s_obj.func()
s_obj2.func()
四、面向开发的基本使用
根据需求定义类 关键字class 属性 变量 方法 函数 默认函数中必须有个self参数 self(自己)代表当前对象
如何将一项物品放入一个空间内?
# 使用面向对象方式开发程序
class Loading:# 属性name Nonecontainer None
# 方法def open_func(self):print(f打开{self.container})
def load_func(self):print(f把{self.name}放入{self.container}中)
def close_func(self):print(f关闭{self.container})
l Loading()
# 指定数据
l.name 大象
l.container 冰箱
# 执行数据处理方法
l.open_func()
l.load_func()
l.close_func()
# 如何把老虎关进笼子
l2 Loading()
l2.name老虎
l2.container笼子
# 执行数据处理方法
l2.open_func()
l2.load_func()
l2.close_func()
五、类中的属性
5-1 属性分类 类属性
class 类名:# 类属性定义 name就是一个类属性name None 对象属性 在方法中使用self定义的属性就是对象属性
class 类名:# 类属性定义 name就是一个类属性name Nonedef func(self):# age是对象属性self.age None 两种属性的区别 类属性 可以被类的对象获取值 也可以被类执行获取对应值 对象属性 只能被类的对象获取值
# 类中属性使用区别
class A:# 类属性 name 张三
def func(self):# 对象属性self.age 20
# 使用类创建对象
a A()
# 使用对象获取类属性值和对象属性值
print(a.name)
a.func() # 执行方法定义对象属性
print(a.age)
# 直接使用类名字获取属性值
print(A.name)
print(A.age)# 类名不能直接获取对象数据的值
5-2 属性值的获取 类的外部获取
# 类的属性值获取
class A:# 类属性定义stu {}
# 在类的方法中操作属性数据def func(self):self.age 20
# 使用类创建对象
a A()
# 类的外部获取属性值
print(a.stu)
# 类的外部修改属性值
a.stu[name] 张三
a.stu[gender] 男
del a.stu[name]
# 再次获取属性
print(a.stu)
# 外部获取对象属性值
a.func()
print(a.age)
类的内部获取 使用self获取属性值进行操作
# 类的属性值获取
class A:# 类属性定义stu {}
# 在类的方法中操作属性数据def func(self):self.age 20
def func2(self):# 操作类属性self.stu[address] 北京# 操作对象属性self.age 25
# 使用类创建对象
a A()
# 类的外部获取属性值
print(a.stu)
# 类的外部修改属性值
a.stu[name] 张三
a.stu[gender] 男
del a.stu[name]
# 再次获取属性
print(a.stu)# 外部获取对象属性值
a.func()
print(a.age)
print(--------------)
# 调用方法2在类的内部处理属性值
a.func2()
print(a.stu)
print(a.age)
六、self的说明 self代表当前对象本身是一个对象 # self 的说明
class Student:name Noneage None
def comment(self):自我介绍方法:return:# 使用self来确认当前对象是谁print(f我叫{self.name},年龄{self.age}岁)print(self)
# 使用类创建对象
s1 Student()
s1.name 张三
s1.age 20
s2 Student()
s2.name 李四
s2.age 25
# 两个对象调用相同方法
s1.comment() # s1对象调用方法 那么方法中slef就是s1对象
s2.comment() # s2对象调用方法 那么方法中slef就是s2对象 七、类的方法 魔法方法 类中自带的方法 __init__() 在创建类对象时会调用的方法 __str__() 在对对象进行print输出时调用 __del__() 在删除对象时会被调用 ...... 自定义方法 用户自己编写的方法 # init魔法方法的使用
class A:
# 魔法方法def __init__(self):print(创建对象调用)
# 自定义方法def func(self):print(自定义方法需要创建对象后使用对象调用才会执行)
# 创建对象会调用init方法
a1 A()
# 使用对象调用func方法
a1.func()
7-1 魔法方法使用 __init__ 在进行类创建对象时会被调用执行 __str__ 在对象进行print输出时会执行 __del__ 删除对象时会被执行
# 类中的魔法方法
class A:# 类属性name None
# 使用魔法方法 格式是固定的# init 初始化方法 创建对象时会被自动执行def __init__(self):print(init被调用执行)
def __del__(self):# 对象被销毁删除时会被自动执行print(del被调用执行)
def __str__(self):# 当对象被print输出时会将str中返回值进行输出return self.name
# 创建对象
a A()
# 手动删除对象
# del a
# 输出对象
a.name 张三
# print时会自动调用str方法获取返回值
print(a)
# 程序结束 对象会被自动删除
print(程序结束)
7-2 init魔法方法的传参 方法本质其实就是函数可以将数据通过参数传递到方法内 形参 缺省参数 不定长参数 实参 位置参数 按照形参的位置和个数传递数据 关键字参数 形参名值 init魔法方法再创建对象时会调用方法 可以在init方法中定义参数 在实际开发中都是使用init方法在创建对象时传递参数数据
# init方法的传参
class A:# name None
# 可以使用init方法在创建对象时给属性赋值# 通过init的参数赋值def __init__(self,name,age,gender男):# 定义对象属性self.name nameself.age ageself.gender gender
# 使用类创建对象,在括号内传递init的参数数据
a A(李四,20,男)
# 在生成对象后才对属性赋值
# a.name 张三
# 直接获取属性值
print(a.name)
print(a.age)
print(a.gender)
a1 A(name王五,gender男,age22)
print(a1.name)
7-3 自定义方法 由开发自己定义代码实现逻辑 自定义方法的分类 对象方法 默认自定方法就是对象方法 类方法 使用语法声明是类方法 静态方法 使用语法糖声明是静态方法 区别 能被谁调用 对象方法 只能被对象调用 类方法 可以被类名直接调用也可以被被对象调用 静态方法 可以被类名直接调用也可以被被对象调用 # 类中方法
class A:
def func1(self):# 对象方法print(func1 对象方法被执行)
# 类方法 classmethod 声明该方法是类方法 python的语法糖classmethoddef func2(self):print(func2 类方法被执行)
# 静态方法staticmethoddef func3():print(func3 静态方法被执行)
# 创建对象
a A()
# 对象可以调用所有方法
a.func1()
a.func2()
a.func3()
# 使用类名直接调用
print(----------)
A.func2()
A.func3() 日常开发都是使用对象方法