当前位置: 首页 > news >正文

day15 python(3)——python基础(完结!!)

【没有所谓的运气🍬,只有绝对的努力✊】

目录

1、函数

1.1 函数传参中的拆包

1.2 匿名函数的定义

1.3 匿名函数练习

1.4 匿名函数应用——列表中的字典排序

2、面向对象 OOP

2.1 面向对象介绍

2.2 类和对象

2.3 类的构成和设计

2.4 面向对象代码的步骤

2.5 面向对象——小案例

2.6 self

2.7 对象的属性操作

2.7.1  类外部添加

2.8 魔法方法

2.8.1  __init__  的使用

2.8.2 __str__ 的使用

2.8.3  __del__ 的使用

3、案例1——小明爱跑步

4、小结

5、作业

5.1  定义一个学生类

5.2 定义一个电脑

6、封装案例——存放家具

7、案例——登录页面(用于后续的自动化测试学习)

8、私有 和 公有

9、继承

9.1 继承定义

9.2 案例——继承

10、重写

11、多态

12、属性和方法

12.1 属性的划分

12.2 练习

12.3 方法的划分

12.3.1 案例——游戏类

12.4 补充概念——哈希、is

13、小结

14、文件

14.1 文件介绍

14.2 打开文件、读-写文件、关闭文件

14.3 文件——案例

14.3.1 写入文件

14.3.2 读文件

14.4 使用with open打开文件

14.5 按行读取文件内容

14.6 json文件的处理

14.6.1 json文件的语法

14.6.2 json 练习1

14.6.3 json 练习2

14.7 json写入

15、异常

15.1 异常的定义

15.2【捕获所有的异常】

15.3【捕获指定异常】

15.4 【捕获多个指定类型的异常】

15.5 【异常捕获的完整版本】

15.6  异常传递

16、小结

17、模块和包

17.1  模块的导入

17.2 模块的查找顺序

18、__name__的作用

18.1 练习

19、包


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 = nameself.age = agedef 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 = nameself.age = agedef 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 = nameself.weight = weightdef __str__(self):return f'姓名:{self.name}-----体重:{self.weight}'def run(self):print(f"{self.name}----跑步")self.weight -= 0.5def eat(self):print(f"{self.name}----吃完后")self.weight += 1person = Person('小明',75)
print(person)    # 姓名:小明-----体重:75person.run()
print(person)    # 姓名:小明-----体重:74.5person.eat()
print(person)    # 姓名:小明-----体重:75.5

4、小结

5、作业

5.1  定义一个学生类

class Student:def __init__(self, name, age):self.name = nameself.age =agedef __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 += 1xm = 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 = brandself.price = pricedef 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.areaprint(f'{item.name}  添加成功!')else:print('房间不足以放家具')# 家具类
class HouseItem:def __init__(self,name,area):self.name = nameself.area = areadef __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 = usernameself.password = passwordself.code = codeself.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 += 1dog = Dog('小花')
dog = Dog('斑点狗')
print(Dog.my_count)   # 2         一般用 类名.属性名 调用。

12.3 方法的划分

12.3.1 案例——游戏类

import randomclass Game:# 类属性top_score = 0   # 记录游戏的最高分def __init__(self, name):self.name = namedef 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_numgame = 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 jsonwith 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 jsonwith 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 jsonlist_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、包


今天暂时到这里啦~

相关文章:

day15 python(3)——python基础(完结!!)

【没有所谓的运气&#x1f36c;&#xff0c;只有绝对的努力✊】 目录 1、函数 1.1 函数传参中的拆包 1.2 匿名函数的定义 1.3 匿名函数练习 1.4 匿名函数应用——列表中的字典排序 2、面向对象 OOP 2.1 面向对象介绍 2.2 类和对象 2.3 类的构成和设计 2.4 面向对象代码…...

/:087启动游戏时提示丢失”d3dx···.dll””VCOMP···.dll”

/:087启动游戏时提示丢失”d3dx.dll””VCOMP.dll”或遇到应用程序无法正常启动&#xff08;0xc000007b&#xff09;和游戏有图像没有声音等情况。 主要是因为系统缺少大型游戏/软件运行的必备组件&#xff0c;这些组件有DirectX&#xff0c;Visual C2010&#xff0c;2012&…...

利用PHP和phpSpider进行图片爬取及下载

利用PHP和phpSpider进行图片爬取及下载&#xff0c;可以遵循以下步骤。phpSpider是一个开源的PHP爬虫框架&#xff0c;它可以帮助你轻松地抓取网页内容。以下是一个基本的步骤指南&#xff1a; 1. 安装phpSpider 首先&#xff0c;你需要确保你已经安装了Composer&#xff08;…...

企业架构划分探讨:业务架构与IT架构的利与弊

在企业架构&#xff08;EA&#xff09;的江湖里&#xff0c;大家一直致力于如何把企业的复杂性简化成有条有理的架构蓝图。有人选择把企业架构分成业务架构和IT架构&#xff0c;而IT架构又进一步细分为应用架构、数据架构和技术架构。但一提到这种划分方式&#xff0c;总有人跳…...

Java设计模式 —— 【结构型模式】桥接模式详解

前言 现在有一个需求&#xff0c;需要创建不同的图形&#xff0c;并且每个图形都有可能会有不同的颜色。 首先我们看看用继承来实现&#xff1a; 我们可以发现有很多的类&#xff0c;假如我们再增加一个形状或再增加一种颜色&#xff0c;就需要创建更多的类。 试想&#xf…...

MySQL学习之DDL操作

目录 数据库的操作 创建 查看 选择 删除 修改 数据类型 表的创建 表的修改 表的约束 主键 PRIMARY KEY 唯一性约束 UNIQUE 非空约束 NOT NULL 外键约束 约束小结 索引 索引分类 常规索引 主键索引 唯一索引 外键索引 优点 缺点 视图 创建 删除 修改…...

游戏AI实现-寻路算法(A*)

A*&#xff08;A-star&#xff09;是一种图遍历和寻路算法&#xff0c;由于其完整性、最优性和最佳效率&#xff0c;它被用于计算机科学的许多领域。给定一个加权图、一个源节点和一个目标节点&#xff0c;该算法将找到从源到目标的最短路径&#xff08;相对于给定的权重&#…...

spring学习(spring的IoC思想、spring容器、spring配置文件、依赖注入(DI)、BeanProxy机制(AOP))

目录 一、spring-IoC。 &#xff08;1&#xff09;spring框架。(诞生原因及核心思想) 1、为什么叫框架&#xff1f; 2、spring框架诞生的技术背景。 &#xff08;2&#xff09;控制反转&#xff08;IoC&#xff09;。 &#xff08;3&#xff09;spring的Bean工厂和IoC容器。 &a…...

谁说C比C++快?

看到这个问题&#xff0c;我我得说&#xff1a;这事儿没有那么简单。 1. 先把最大的误区打破 "C永远比C快" —— 某位1990年代的程序员 这种说法就像"自行车永远比汽车省油"一样荒谬。我们来看个例子&#xff1a; // C风格 char* str (char*)malloc(100…...

GEE+本地XGboot分类

GEE本地XGboot分类 我想做提取耕地提取&#xff0c;想到了一篇董金玮老师的一篇论文&#xff0c;这个论文是先提取的耕地&#xff0c;再做作物分类&#xff0c;耕地的提取代码是开源的。 但这个代码直接在云端上进行分类&#xff0c;GEE会爆内存&#xff0c;因此我准备把数据下…...

OpenCV相机标定与3D重建(24)计算两个二维点集之间的最佳仿射变换矩阵(2x3)函数estimateAffine2D()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算两个二维点集之间的最优仿射变换&#xff0c;它计算 [ x y ] [ a 11 a 12 a 21 a 22 ] [ X Y ] [ b 1 b 2 ] \begin{bmatrix} x\\ y\\ \en…...

UIP协议栈 TCP通信客户端 服务端,UDP单播 广播通信 example

文章目录 1. TCP通信 客户端&#xff08;关键配置&#xff09;2. TCP 服务端配置3. UDP 点播通信4. UDP 广播通信5. UIP_UDP_APPCALL 里边的处理example6. TCP数据处理 &#xff0c;UIP_APPCALL调用的函数 UIP_APPCALL TCP的数据都在这个宏定义的函数里进行数据处理的 UDP 数据…...

【NoSQL系列】为什么要使用Redis?

第一次知道Redis是以前准备面试的时候&#xff0c;只知道是用来缓存数据的。随着这几年的工作&#xff0c;对软件的认识从盲人摸象到睁眼看世界。 在常用的软件架构评价模型中&#xff0c;性能、可用性、安全性和可维护性是常见的评价属性&#xff0c;客户总希望系统响应又快有…...

MySQL Explain 分析SQL语句性能

一、EXPLAIN简介 使用EXPLAIN关键字可以模拟优化器执行SQL查询语句&#xff0c;从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。 &#xff08;1&#xff09; 通过EXPLAIN&#xff0c;我们可以分析出以下结果&#xff1a; 表的读取顺序数据读取…...

IIS部署程序https是访问出现403或ERR_HTTP2_PROTOCOL_ERROR

一、说明 在windows server 2016中的IIS程序池里部署一套系统&#xff0c;通过https访问站点&#xff0c;同时考虑到安全问题以及防攻击等行为&#xff0c;就用上了WAF云盾功能&#xff0c;能有效的抵挡部分攻击&#xff0c;加强网站的安全性和健壮性。 应用系统一直能够正常…...

学技术学英文:代码中的锁:悲观锁和乐观锁

本文导读&#xff1a; 1. 举例说明加锁的场景&#xff1a; 多线程并发情况下有资源竞争的时候&#xff0c;如果不加锁&#xff0c;会出现数据错误&#xff0c;举例说明&#xff1a; 业务需求&#xff1a;账户余额>取款金额&#xff0c;才能取钱。 时间线 两人共有账户 …...

青少年编程与数学 02-004 Go语言Web编程 02课题、依赖管理

青少年编程与数学 02-004 Go语言Web编程 02课题、依赖管理 课题摘要:一、项目结构各目录说明&#xff1a; 二、依赖项三、依赖管理任务四、依赖管理步骤1. 初始化Go Modules项目2. 添加依赖3. 指定依赖版本4. 更新依赖5. 清理未使用的依赖6. 离线工作7. 模块隔离8. 可重现构建 …...

MyBatis写法汇总

Mybatis写法汇总 1. 批量操作 1.1 批量插入 <insert id"batchInsert" parameterType"java.util.List">INSERT INTO user (username, password, create_time) VALUES<foreach collection"list" item"item" separator"…...

【Linux学习】十五、Linux/CentOS 7 用户和组管理

文章目录 一、组的管理1.组的创建格式&#xff1a;参数&#xff1a; 2.组的删除格式&#xff1a;参数&#xff1a; 3.组的属性修改格式&#xff1a;参数&#xff1a; 4.查看组的信息①cat /etc/group 命令②getent group 命令③仅显示系统中所有组名 二、用户的管理①超级用户&…...

三维无人机航迹算法的目标函数如何确定

一、定义目标函数 在三维无人机航迹算法中,目标函数的确定通常基于具体的任务需求和飞行约束。以下是一个简单的例子,展示了如何为三维无人机航迹规划定义一个目标函数。 例子:最小化飞行时间和避障的三维无人机航迹规划 1.任务描述:无人机需要从起点飞到终点,同时避开一些…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...