【没有所谓的运气🍬,只有绝对的努力✊】
目录
1、函数
1.1 函数传参中的拆包
想要将列表作为参数,传入函数中。 =====》 my_sum( *my_list ) 即可。
想要将字典作为参数,传入函数中。 =====》 my_sum( **my_list ) 即可。
1.2 匿名函数的定义
1.3 匿名函数练习
# 定义一个匿名函数,可以求两个数的乘积。
func1 = lambda a,b:a*b
print(func1(20,8))
# 定义一个匿名函数,参数为字典,返回字典中键为age的值。
func2 = lambda a:a['age']
dic = {'name': '小明', 'age': 18}
print(func2(dic))
1.4 匿名函数应用——列表中的字典排序
my_list = [{'name': '小明', 'age': 18},{'name': '小李', 'age': 12},{'name': '小王', 'age': 28}]
my_list.sort(key=lambda x:x['age'])
print(my_list)
# [{'name': '小李', 'age': 12}, {'name': '小明', 'age': 18}, {'name': '小王', 'age': 28}]
字符串比大小:是根据ASCII比较的。 A<Z<a<z
ord( 字符 ) 获取字符 的ASCII值。
chr( ASCII值 ) 获取对应的 字符。
2、面向对象 OOP
2.1 面向对象介绍
2.2 类和对象
2.3 类的构成和设计
2.4 面向对象代码的步骤
2.5 面向对象——小案例
'''
需求:小猫爱吃鱼,小猫要喝水
'''
class Cat:
def eat(self):
print('爱吃鱼')
def drink(self):
print('爱喝水')
cat = Cat()
cat.eat()
2.6 self
2.7 对象的属性操作
2.7.1 类外部添加
2.8 魔法方法
2.8.1 __init__ 的使用
类名+() ==========>创建对象。
'''
需求:小猫爱吃鱼,小猫要喝水
'''
class Cat:
def __init__(self,name,age):
self.name = name
self.age = age
def getInfo(self):
print(f'小猫的名字:{self.name},年龄:{self.age}')
blue_cat = Cat("蓝猫",2)
blue_cat.getInfo()
print('-'*30)
black_cat = Cat('黑猫',3)
black_cat.getInfo()
2.8.2 __str__ 的使用
'''
需求:小猫爱吃鱼,小猫要喝水
'''
class Cat:
def __init__(self,name,age):
self.name = name
self.age = age
def getInfo(self):
print(f'小猫的名字:{self.name},年龄:{self.age}')
def __str__(self):
return f'{self.name}----{self.age}'
blue_cat = Cat("蓝猫",2)
print(blue_cat)
print('-'*30)
black_cat = Cat('黑猫',3)
print(black_cat)
2.8.3 __del__ 的使用
3、案例1——小明爱跑步
class Person:
def __init__(self,name,weight):
self.name = name
self.weight = weight
def __str__(self):
return f'姓名:{self.name}-----体重:{self.weight}'
def run(self):
print(f"{self.name}----跑步")
self.weight -= 0.5
def eat(self):
print(f"{self.name}----吃完后")
self.weight += 1
person = Person('小明',75)
print(person) # 姓名:小明-----体重:75
person.run()
print(person) # 姓名:小明-----体重:74.5
person.eat()
print(person) # 姓名:小明-----体重:75.5
4、小结
5、作业
5.1 定义一个学生类
class Student:
def __init__(self, name, age):
self.name = name
self.age =age
def __str__(self):
return f'姓名:{self.name}, 年龄:{self.age}'
def eat(self):
print(f'{self.name} 要吃饭')
def sleep(self):
print(f'{self.name} 要睡觉')
def addAge(self):
print('过了一个年')
self.age += 1
xm = Student('小明',18)
xm.eat()
xm.sleep()
xm.addAge()
print(xm)
print('-'*30)
xh = Student('小红',17)
xh.eat()
xh.sleep()
xh.addAge()
print(xh)
5.2 定义一个电脑
class Computer:
def __init__(self,brand,price):
self.brand = brand
self.price = price
def playMovie(self,movie_name):
print(f"{self.brand} 电脑播放 {movie_name}")
xm = Computer('小米',10000)
xm.playMovie("葫芦娃")
apple = Computer('苹果',16999)
apple.playMovie("变形金刚")
6、封装案例——存放家具
# 房子类
class House:
def __init__(self, name, total_area):
self.name = name # 户型
self.total_area = total_area # 总面积
self.free_area = total_area # 剩余面积
self.item_list = [] # 家具名称列表
def __str__(self):
return f"户型:{self.name}---总面积:{self.total_area}----剩余面积:{self.free_area}---家具名称:{self.item_list}"
def add_item(self,item): # item 家具对象
if self.free_area > item.area:
self.item_list.append(item.name)
self.free_area = self.total_area - item.area
print(f'{item.name} 添加成功!')
else:
print('房间不足以放家具')
# 家具类
class HouseItem:
def __init__(self,name,area):
self.name = name
self.area = area
def __str__(self):
return f'{self.name} ---占地面积(平方米):{self.area}'
bed = HouseItem('席梦思',4)
chest = HouseItem('衣柜',2)
table = HouseItem('餐桌',1.5)
print(bed)
print(chest)
print(table)
print('-'*30)
house = House('三室',109)
house.add_item(bed)
house.add_item(chest)
print(house)
7、案例——登录页面(用于后续的自动化测试学习)
class LoginPage:
def __init__(self,username,password,code):
self.username = username
self.password = password
self.code = code
self.btn = '登录'
def login(self):
print(f'1、输入用户名: {self.username}')
print(f'2、输入密码: {self.password}')
print(f'3、输入验证码: {self.code}')
print(f'4、点击按钮: {self.btn}')
loginPage = LoginPage('admin','112345','12hf')
loginPage.login()
8、私有 和 公有
9、继承
9.1 继承定义
9.2 案例——继承
class Animals:
def eat(self):
print(f'在吃')
class Dog(Animals):
def jiao(self):
print('叫')
class Quan(Dog):
pass
# animals = Animals()
# animals.eat()
dog = Dog()
dog.eat()
dog.jiao()
print('-'*30)
quan = Quan()
quan.eat()
quan.jiao()
10、重写
class Dog:
def bark(self):
print('汪汪汪叫')
class Quan(Dog):
def bark(self): # 重写父类的bark()方法
print('嗷嗷叫')
quan = Quan()
quan.bark()
class Dog:
def bark(self):
print('汪汪汪叫')
class Quan(Dog):
def bark(self): # 重写父类的bark()方法
print('嗷嗷叫')
super().bark()
print('嗷嗷叫')
quan = Quan()
quan.bark()
11、多态
12、属性和方法
12.1 属性的划分
12.2 练习
class Dog:
my_count = 0 # 定义类属性
def __init__(self,name): # 定义实例属性,init方法中
self.name = name
# 每创建一个对象,就会调用init方法
Dog.my_count += 1
dog = Dog('小花')
dog = Dog('斑点狗')
print(Dog.my_count) # 2 一般用 类名.属性名 调用。
12.3 方法的划分
12.3.1 案例——游戏类
import random
class Game:
# 类属性
top_score = 0 # 记录游戏的最高分
def __init__(self, name):
self.name = name
def show_help(self):
print('这是游戏的帮助信息')
def show_top_score(self):
print(f'游戏的最高分: {Game.top_score}')
def start_game(self):
random_num = random.randint(10, 100) # 生成随机数10-100 (本次游戏得分)
print(f'本次游戏得分----- {random_num}')
if random_num > Game.top_score:
Game.top_score = random_num
game = Game('小王')
game.start_game()
game.show_top_score()
print('-'*30)
game.start_game()
game.show_top_score()
game.show_help()
【优化代码】
12.4 补充概念——哈希、is
13、小结
14、文件
14.1 文件介绍
14.2 打开文件、读-写文件、关闭文件
14.3 文件——案例
14.3.1 写入文件
# 1、打开文件
f = open('a.txt',mode='w',encoding='utf-8')
# 2、写入文件
f.write('偷得浮生半日')
# 3、关闭文件
f.close()
14.3.2 读文件
# 1、打开文件
f = open('a.txt', 'r',encoding='utf-8')
# 2、读文件
buff = f.read()
print(buff)
# 3、关闭文件
f.close()
14.4 使用with open打开文件
with open('a.txt', 'a', encoding='utf-8') as f:
f.write('\n窗前明月光\n')
f.write('\n疑是地上霜\n')
14.5 按行读取文件内容
# with open('b.txt',encoding='utf-8') as f:
# while True:
# buff = f.readline()
# if buff == 0:
# break
# else:
# print(buff, end='')
with open('b.txt','r', encoding='utf-8') as f:
for i in f:
print(i,end='')
14.6 json文件的处理
14.6.1 json文件的语法
【json文件】
{
"name": "小明",
"age": 18,
"isMen": true,
"like": [
"听歌","游戏","购物","吃饭","睡觉","打豆豆"
],
"address": {
"country": "中国",
"city": "上海"
}
}
import json
with open('info.json','r',encoding='utf-8') as f:
result = json.load(f)
print(result)
print(result['name'])
print(result['address']['city'])
14.6.2 json 练习1
[
{
"name": "小明",
"age": 18,
"isMen": true,
"like": [
"听歌","游戏","购物","吃饭","睡觉","打豆豆"
],
"address": {
"country": "中国",
"city": "上海"
}
},
{
"name": "小红",
"age": 17,
"isMen": false,
"like": [
"听歌","学习","购物"
],
"address": {
"country": "中国",
"city": "北京"
}
}
]
import json
with open('info1.json','r',encoding='utf-8') as f:
f_list = json.load(f)
for i in f_list:
print(i['name'], i['age'], i['address']['city'])
14.6.3 json 练习2
import json
newList = []
with open('login.json','r',encoding='utf-8') as f:
info_list = json.load(f)
for item in info_list:
newList.append((item['username'],item['password'],item['expect']))
print(newList)
# [('admin', '123456', '登录成功'), ('root', '123456', '登录失败'), ('admin', '1234567', '登录失败')]
14.7 json写入
import json
list_json = [('admin', '123456', '登录成功'), ('root', '123456', '登录失败'), ('admin', '1234567', '登录失败')]
with open('info4.json','w',encoding='utf-8') as f:
# json.dump(list_json,f)
# json.dump(list_json, f,ensure_ascii=False) # 显示中文
json.dump(list_json,f,ensure_ascii=False, indent=2) # 显示缩进
15、异常
15.1 异常的定义
15.2【捕获所有的异常】
try:
num = input("请输入数字:")
num = int(num)
print('num===', num)
except:
print("异常,请输入数字!!")
15.3【捕获指定异常】
try:
num = input("请输入数字:")
num = int(num)
print('num===', 10/num)
except ValueError:
print("异常,请输入数字!!")
15.4 【捕获多个指定类型的异常】
try:
num = input("请输入数字:")
num = int(num)
print('num===', 10/num)
except ValueError:
print("异常,请输入数字!!")
except ZeroDivisionError:
print('除数不能为0')
15.5 【异常捕获的完整版本】
【常用下方的代码】
15.6 异常传递
16、小结
17、模块和包
17.1 模块的导入
快捷导入包:
17.2 模块的查找顺序
18、__name__的作用
18.1 练习
19、包
今天暂时到这里啦~