有三分钟的热度，就有三分钟的收获！
0731 周一脚低头一看，脚后跟上方已经磨烂了，其实在刚出门的时候就感觉到脚和鞋子在摩擦了，出于侥幸以及懒惰的心理，想着可以坚持到晚上回家，便没再理会，路程过了一半已经感到轻微疼痛了，出于怕麻烦的心理，想着到公司在调整吧，行至路程的三分之二时，已经感到明显疼痛了，决定进行调整，很简单的步骤，把袜子往上面提了提，鞋带紧了紧，确实是很简单的步骤，遂反思，如果在出门的时候调整会怎样？在感到轻微疼痛的时候调整又怎样？我想应该不至于将脚磨烂吧，哈哈哈争吵 一上班的时候小杨又又又又给我吐槽说想离职，大意就是工作的无意义，对个人提升也不大，我又重复了之前的回答说，不想上班的话离职换一份工作就好了，然后就又是一阵说教，诸如好好学习争取教资上岸一类的...说完后小杨倒是没有在说什么了，但此时我的心中却又浮现了小杨之前说我为什么毕业了不好好赚钱，没有存款，为什么没有创业，不能让她当老板夫人。下班后因为这个问题和小杨拌了几句嘴，告诉了小杨我的委屈，小杨再三向我说明当时并没有埋怨我的意思，现在想来小杨当时或许就只想让我安慰她，而我只顾着说教，揣测0801 周二争吵 二晚上和小杨买了一份炒鸡又买了一瓶雪碧，想着把上次在韩风源领取的红酒喝掉，到家后由于没有工具，打不开红酒，便和小杨喝起了啤酒，喝了一听后，可能是啤酒和雪碧掺在一起的原因，小杨吐了。吃完饭后，小杨她二姐找她要看电视的软件，小杨发过去后，老二说这个软件之前用过，打开以后里面什么都没有，小杨说那是因为你没有设置的原因，老二说那你之前怎么不给我设置呢，小杨本打算说是她一个闺蜜给她设置的，我抢过手机，给老二发之前是我男朋友设置的。在发的过程中不知道小杨是出于什么原因，是害怕还是愤怒，眼中带着泪花一样的光，来抢手机，还说我要是发了就不要我了，我不理解，小杨抢回手机后，就收到了老二的回复，老二说你没对象（个中原因，不再赘述）是的，我是可以用我看过的书来告诉我自己，我不该用小杨的手机给老二发这条消息，老二和小杨说什么和我无关，我应该不在意老二的看法，我应该保持自己内心的平静，不以物喜，不以己悲可，我不想！0803 周三考虑很有意思的两个字，由于做完的争吵，我和小杨并没有像往常一样抱着入睡，早上六点左右，小杨主动抱了我，有了台阶我索性也抱了回去，
现有产品优势点是什么？1. 价格优势1-1 市场上很多店铺单袋产品的价格，要比我们的成本价还要便宜我们的多袋价格有很多，可以与之竞争，那么现在如何让客户知道我们的多袋产品在让利呢？可以在主图说明调整 SKU 顺序，多袋的中间价为默认，单袋 SKU 价格适当提高，对比出多袋的优惠特点（和拼多多热卖 SKU 有小火苗类似）2. 套餐搭配3. 有竞争力3-1 品牌知名度我们的产品有很多，都是比较有知名度且自带流量的，但这些产品并不是我们独有的，所以又回到了第 1 条和第 2 条。怎么推产品查看所推产品的市场销量，观察是否有市场（调查市场）价格设置的接近成本，越接近越好，积累基础销量评价（提升价格优势）完成基础积累后，根据数据，适当回拉价格（提高利润）逐步降低投产比（减少成本）自然流量不能落下，能报的活动，一定报（获取流量）
时效机制高优先级：当天一定要做中优先级：最好在当天做低优先级：想什么时候做，就什么时候做奖励机制首先创建任务时，要明白完成可以给自己带来什么益处然后，创建任务时依据个人心意，为自己制订完成奖励放弃机制任务创建后 7 天内没有完成的，就直接放弃系统建议对同等级的任务进行排序，按序执行最好每隔一段时间，总结并反思任务的完成情况任务系统的建立是为了辅助个人成长，不要困在系统里创建每个任务时，评估完成大约要耗费的时间，时间尽量宽裕些10 分钟内可以完成的用 😊25 分钟内可以完成的用 🍅设立任务时可以将任务拆分为无数个小任务，让任务从模糊到清晰
时效机制高优先级：当天一定要做中优先级：最好在当天做低优先级：想什么时候做，就什么时候做奖励机制首先创建任务时，要明白完成可以给自己带来什么益处然后，创建任务时依据个人心意，为自己制订完成奖励放弃机制任务创建后 7 天内没有完成的，就直接放弃系统建议最好每隔一段时间，总结并反思任务的完成情况任务系统的建立是为了辅助个人成长，不要困在系统里创建每个任务时，评估完成大约要耗费的时间，时间尽量宽裕些10 分钟内可以完成的用 😊25 分钟内可以完成的用 🍅设立任务时可以将任务拆分为无数个小任务，让任务从模糊到清晰
06-26 合照看天气预报后天要下雨，便想着买件雨衣，于是在拼多多看了几款后，给小杨发过去，询问下小杨的意见，没想到的是小杨又一次的无视了这个消息，联想到小杨很多时候都会无视我，很生气，于是下班的时候和小杨赌气，也无视小杨的信息，使得我们冷战了两个小时。事后反思，本来为了应对下雨担心小杨上班不方便，是一件好事，却因为想起了以前不被小杨在意的事情，进而开始冷战，小杨固然存在某些问题，但我作为一个男人更应该大度一点，我更是在小杨不知道发生了什么的时候，就和小杨冷战，以后遇到问题首先应该做的就是沟通，沟通很重要，另外，在这个城市我是有许多亲人在的，而小杨的身边只有我，再加上刚毕业，有着各种的不习惯，我更应该多包容一些。附一张合照：06-27 任务系统奖励机制初步决定采取积分制，完成任务获取积分，可以预先设置自己想要的奖励，换算为奖励的实际价格，完成任务积攒积分进行兑换，就这样先测试一段时间吧。06-28 纸拿到纸的那一刻，我不由得笑了，什么时候买包纸都要这么纠结了06-29 逛街晚上临近九点的时候，老妈给我打来电话，问我和小杨要不要和她一起去逛超市，我下意识的就拒绝了，电话挂断后，小杨说你这个星期都拒绝老妈三次了，我想了下，虽然次数没有达到三次，但老妈应该是想让我们陪她的，于是便给老妈回了个电话，答应等老妈下班后一起去逛逛。下班后我们去了附近的盒马生鲜买了点水果，因为有一次给小杨点的外卖送了几个果冻，被老妈看到了，不知怎的老妈就断定小杨喜欢吃果冻，于是又去丹尼斯买了点果冻。07-01 鸡毙你没什么记忆点了，翻看相册只找到了给小杨拍的一个视频，下面是其中一部分的截图，以后的日记，最迟第二天要写出来的07-02 和小妹画画今天周末休息，下午老妈让区商场给她送西瓜，和小杨到了商场恰好小妹也在，小妹让我带她去玩，刚答应她，便立刻拉着我和小杨，直奔三楼。到了三楼，小妹想玩绘画，便让她挑选了喜欢的图，小妹挤压着相应的颜色，小杨在旁边辅助着她，我则是到旁边的小吃店，买了三根烤肠，和一些关东煮，哈哈画完以后，又给小妹买了本故事书，小妹又提出要去逛超市，我想了想月底自己那瘪瘪的钱包，便说，去可以，只能消费 20，小妹带着我和小杨到了商场负一楼的一家精品店，小妹遵守 20 元的额度，没有闹，最后挑了两个益智小玩具
Python就业学习笔记1·基础语法1-1,输出Hello,Worldprint('Hello,World')1-2，Python的导入位置import os print (os.getcwd())1-3，Python的注释方法# 注释内容 """三引号注释的第一种 双引号形式，可以随意换行 """ '''三引号注释的第一种 dan引号形式，可以随意换行 '''1-4，input函数# 一般用于输入信息 name = input('你的名字是：')1-5，变量# 一个拥有变量值的变量名等于变量 # 变量名必须是数字，字母，下划线组成，开头必须是字母或者下划线，变量名是区分大小写的 name = 'xiaoming' # 快速定义变量 a, b, c = 1, 2, 31-6，Python的关键字关键字含义关键字含义True布尔类型，表示真is判断变量是否是某个类的实例False布尔类型，表示否not逻辑运算，非的操作def函数定义or逻辑运算，或的操作if逻辑中的如果pass无意义，占位字符elif逻辑中的或者如果raise主动抛出异常else逻辑中的否则with简化Python语句try异常语句的开启yield从循环或函数，依次返回数据import导入语句，可与from公用 2.Python的数据类型2-1，Pyhton的数据类型数字类型，字符串类型，布尔类型，空类型，列表类型，元组类型，字典类型2-2，数字类型1.整型整形就是我们说的整数，0也是整数，但是是特殊的整数int既是整形的代表，又是定义整型的内置函数，但定义一个整型并不一定要使用int声明2.浮点型浮点型就是我们生活中的小数，凡是带有小数点的类型，都可以认为是浮点类型在Python中，float既是浮点型的代表，又是定义浮点型的内置函数，但定义一个浮点型并不一定要使用float声明3.type函数作用：返回变量的类型用法：type()括号里面填写已经定义的变量名或变量number = 4.5 print(type(number)) # 可以直接使用变量 print(type(22)) #也可以直接传入数值2-3，字符转1.什么是字符串用 '' 或 "" 包裹的信息就是字符串字符串中可以包含任何字符，如字母，数字，符号，且没有先后顺序在Python中，使用str来代表字符串类型，并且通过该函数可以定义字符串类型2.id函数作用：返回变量的内存地址用法id()括号里面填写变量num = 'hello' print(id(num))3.len函数作用：返回字符串的长度，无法返回数字类型的长度，因为数字类型没有长度用法：len()括号里面填写变量test = len('这里测试len函数') print(test)4.内置成员运算符 in和not in的使用in作用：判断你的数据中，是否存在你想要的成员,存在返回True,反之返回False用法：字符 in 字符串s = "hello liu xiyu" print('xiyu' in s)not in作用：判断你的数据中，是否不存在你想要的成员,不存在返回True,反之返回Falses = "hello liu xiyu" print('xiyus' not in s)5.max函数作用：返回数据中最大的成员顺序：中文符号 > 字母 > 数字 > 英文符号，中文按照拼音首字母计算用法：max()括号里面填写数据s = "今天是2023年4月2日" print(max(s))6.min函数作用：返回数据中最小的成员顺序：中文符号 > 字母 > 数字 > 英文符号，中文按照拼音首字母计算用法：min()括号里面填写数据s = "今天是2023年4月2日,星期日！" print(min(s))7.字符串的累加字符串不是数字不能做减法，乘除法字符串的拼接，用 + 这个符号a = '123' b = '456' c = a + b # 输出结果为 123456 print(c)2-4,布尔类型与空类型1.布尔类型定义：真假的判断，即布尔类型布尔值：True为真，False为假在计算机中 0和1 是计算机最原始的形态，故而经常会将0,1来代替False,True2.布尔(bool)函数的使用作用：bool代表布尔类型，也可以对结果进行真假的判断用法：bool()括号里面填写需要判断的数据label = '我们在一起' print(bool('我' in label))3.空类型定义：不属于任何数据类型，就属于空类型,属于False的范畴，如果不确定类型的时候，可以使用空类型固定值：None2-5，列表1.什么是列表列表就是队列，是各种数据的集合，也是一种数据结构，是一种有序，且内容可重复的集合类型在Python中，list代表列表类型，也可以用它定义一个列表，列表的元素存在一个[]中在Python中，列表是一个无限长度的内容结构max 和 min 函数在列表中使用，需要保持数据类型一致2-6，元组1.什么是元组元组与列表一样，都是一种可以存储多种数据结构的队列，元组也是一个有序的，且元素可以重复的集合，是一个无限制长度的数据集合元组的定义：在Python中，tuple代表着元组这种类型，也可以用它定义一个元组，元组的元素存在()内max 和 min 函数在元组中使用，需要保持数据类型一致元组内容只有一个数据的时候要在后面加,2.元组和列表的区别元组比列表占用资源更小列表是可变的，元组是不可变的2-7，字典1.什么是字典字典是由多个键（key）及其对应的值（value）所组成的一种数据类型2.字典的结构以及定义在Python中，dict用来代表字典，并且可以创建一个字典在Python中，通过{}将一个个key与value存入字典中a = {key : value}3.字典支持的数据类型key支持字符串，数字和元组类型，不支持列表value支持所有的数据类型4.字典的重要特性每个key都是唯一的2-8，赋值运算符赋值运算符有哪些运算符描述举例=等于运算符c = a + b+=加法运算符c += a 等于 c = c + a-=减法运算符c -= a 等于 c = c - a*=乘法运算符c *= a 等于 c = c * a/=除法运算符c /= a 等于 c = c / a%=取模运算符c %= a 等于 c = c % a**=幂运算符c **= a 等于 c = c **= a//=整数运算符c //= a 等于 c = c //= a2-9，比较运算符比较运算符有哪些运算符描述举例==判断是否等于a == b!=判断是否不等于a != b>判断是否大于a > b<判断是否小于a < b>=判断是否大于等于a >= b<=判断是否小于等于a <= b<>判断是否不等于a <> bis判断两个对象存储是否相同a is bis not判断两个对象存储是否不同a is not b3-1 Python 字符串常用方法1. 什么是对象Python 中一切都是对象每个对象都有各自的属性和方法对象的特点就是它的属性，功能就是方法2. capitalize 的功能（首字母大写）作用：将字符串的首字母大写，其他字母小写注意：只对第一个字母有效只对字母有效已经是大写，则无效用法：newstr = string.capitalize() # 函数括弧内什么都不用写3. casefold 与 lower 的用法 （转小写）作用：将字符串的字母改为小写用法：newstr = string.casefold() # 函数括弧内什么都不用填写 newstr = string.lower() # 函数括弧内什么都不用填写注意：只对字符串中的字母有效已经是小写，则无效4. upper 的用法 （转大写）作用：将字符串的字母改为大写用法：big_str = string.upper() # 函数括弧内什么都不用填写注意：只对字符串的字母有效已经是大写，则无效5. swapcase 的用法作用：将字符串中大小写字母进行转换（大转小，小转大）用法：newstr = string.swapcase() # 函数括弧内什么都不用填写注意：只对字符串中的字母有效6. zfill 的用法作用：为字符串定义长度，如不满足，缺少的部分用 0 填补用法：# width:新字符串希望的宽度 newstr = string.zfill(width)注意：与字符串的字符无关定义长度小于当前字符串长度，则不发生变化7. count 的用法作用：返回当前字符串中某个成员（元素）的个数用法：# item:要查询个数的元素 inttype = string.count(item)注意：如果查询的成员（元素）不存在，则返回 08. startswith 和 endswith 的用法作用：startswith 判断字符串开始位是否是某成员（元素）endswith 判断字符串结尾是否是某成员（元素）用法：# item:你想查询的元素，返回一个布尔值 start_test = string.startswith(item) end_test = string.endswith(item)9. find 和 index 的用法作用：返回你想寻找的成员的位置用法：# item:你想查询的元素，返回一个整型 string.find(item) # item:你想查询的元素，返回一个整型或者报错 string.index(item) # PS:字符串的位置从左到右，以 0 开始，空格也算字符串区别：如果 find 找不到元素，会返回 -1如果 index 找不到元素，会导致程序报错10. strip 的用法作用：strip 将去掉字符串左右两边的指定元素，默认是空格用法：# item:你想去掉的元素，可不填写，默认空格 newstr = string.strip(item)注意：传入的元素如果不在开头或者结尾则无效lstrip 仅去掉字符串开头的指定元素或空格rstrip 仅去掉字符串结尾的指定元素或空格11. replace 的功能作用：将字符串中的旧元素替换成新元素，并能指定替换的数量用法：''' 参数： old : 被替换的元素 new : 替代 old 的新元素 max : 可选，代表替换几个，默认全部 如果需要修改多个字符，可以在后面再追加replace函数 newstr = string.replace(old,new).replace(old,new) ''' newstr = string.replace(old,new,max)3-2 字符串 bool 集合1. isspace功能：isspace 判断字符串是否是一个由空格组成的字符串用法：# 无参数可传，返回一个布尔类型 booltype = string.isspace()2. istitle功能：istitle 判断字符串是否是一个标题类型，只能用于英文用法：# 无参数可传，返回一个布尔类型 booltype = string.istitle()3. isupper 与 islower功能：isupper 判断字符串中的字母是否都是大写islower 判断字符中的字母是否都是小写用法：# 无参数可传，返回一个布尔类型 booltype = string.isupper() booltype = string.islower()3-3 字符串编码格式1. 什么是编码格式有一定规则的规则使用了这种规则，我们就能知道传输的信息是什么意思2. 常见编码格式gbk 中文编码ascii 英文编码utf-8 是一种国际通用的编码格式3-4 字符串格式化1. 什么是格式化定义：一个固定的字符串中有部分元素是根据变量的值而改变的字符串2. 格式化使用场景与目的发邮件的时候发短信的时候APP 上发推送的时候对于重复性很多的信息，通过格式化的形式，可以减少代码的书写量3. 根据类型定义的格式化字符串格式化使用 % 来实现# %s 格式符 # ('dewei', 33) 对应格式符的变量，按顺序一一对应，数量须保持一致，超过1个格式化变量用小括号包裹 # % 格式化字符串与格式符变量之间用一个 % 连接，% 两边有1个空格 'my name is %s, my age is %s' % ('dewei', 33)字符串格式化函数 format''' format 函数用来格式化 字符串主题使用{},数字非必需 ''' '你好{0},今天看起来气色不错{1}'.format('小杨','不错')Python 3.6 新加入的 f-strings''' 1.定义一个变量 2.字符串前加 f 符号 3.需要格式化的位置使用变量名 ''' name = '小杨' age = 22 text = f'今天是{name}的{age}岁生日' print (text)3-5 格式化符号定义：用于对应各种数据类型的格式化符号符号说明%s格式化字符串，通用%d格式化整型%f格式化浮点型%u格式化无符号整型，正整型%c格式化字符%o格式化无符号八进制数%x格式化无符号16进制数%e科学计数法格式化浮点数3-6 转义字符1. 什么是转义字符字符要转成其他含义的功能，所以我们叫他转义字符\ + 字符2. Python 中的转义字符们3. 转义无效符在 Python 中，在字符串前加 r 来将当前字符串的转义字符无效化print (r'hello \f')3-2 Python 列表常用方法1. append 的功能功能：将一个元素添加到当前的列表中用法:# new_item:添加进列表的新的元素（成员） list.append(new_item)注意：被添加的元素只会被添加到末尾append 函数是在原有列表的基础上添加，不需要额外添加新的变量2. insert 的功能功能：将一个元素添加到当前列表的指定位置中用法：# index:新的元素放在哪个位置（数字） # new_item:添加进列表的新的元素（成员） list.insert(index, new_item)insert 与 append 的区别：append 只能添加到列表的结尾，insert 可以选择任何一个位置如果 insert 传入的位置列表中不存在，则将新元素添加到列表结尾字符串，元组，列表 元素的位置是从 0 开始计算的3. 列表和元组的 count 函数功能：返回当前列表中某个成员的个数用法：# item:你想查询个数的元素 inttype = list.count(item)注意：如果查询的成员（元素）不存在，则返回 0列表只会检查完整元素是否存在需要计算的内容4. remove 的功能功能：删除列表中的某个元素用法：# item:准备删除的列表元素 list.remove(item)注意：如果删除的成员（元素）不存在，会直接报错如果被删除的元素有多个，只会删除第一个remove 函数不会返回一个新的列表，而是在原先的列表中对元素进行删除5. del 函数的功能功能：del 把变量完全彻底删除用法：# string 要删除的变量 del string6. reverse 的功能功能：对当前列表顺序反转用法：list.reverse()7. sort 的功能功能：对当前列表按照一定规律进行排序用法：# key : 参数比较（key 涉及函数学习，我们在日后讲解当前默认不传即可 # reverse : 排序规则，reverse = True 降序，reverse = False 升序（默认） list.sort(key = None, reverse = False)注意：列表中的元素类型必须相同，否则无法排序（报错）8. clear 的功能功能：将当前列表中的数据清空用法：list.clear()9. copy 的功能（浅拷贝）功能：将当前的列表复制一份相同的列表，新列表与旧列表内容相同，但内存空间不同用法：# 该函数无参数，返回一个一模一样的列表 list.copy()copy 与二次复制的区别：二次赋值的变量与原始变量享有相同内存空间copy 函数创建的新列表与原始列表不是一个内存空间，不同享数据变更浅拷贝：深拷贝：10. extend 的功能（导入列表或元组）功能：将其他列表或元组的元素倒入到当前列表中用法：# iterable 要导入的列表或元组，无返回值 list.extend(iterable)3-3 列表索引1. 什么是索引字符串，列表和元组从最左边记录的位置就是索引索引用数字表示，起始从 0 开始字符串，列表（元组）的最大索引是他们的长度 - 12. 什么是切片索引用来对单个元素进行访问，切片则对一定范围内的元素进行访问切片通过冒号在中括号内把相隔的两个索引查找出来 [0: 10]切片规则为：左含，右不含3. 列表的索引，获取与修改list[index] = new_item数据的修改只能在存在的索引范围内列表无法通过添加新的索引方式赋值list.index(item)4. pop 的功能功能：通过索引删除并获取列表的元素用法：# index 删除列表的第几个元素 # 函数会删除该索引的元素并返回，如果传入的 index 索引不存在则报错 list.pop(index)5. 通过 del 删除索引用法：# 直接删除 无返回值 # 如果 index （索引）不存在则报错 del list[index]6. 索引切片在元组中的特殊性可以和列表一样获取索引与切片索引元组函数 index 和列表用法完全一致7. 列表之字符串切片字符串的索引与获取：一个字符对应一个索引索引规则与列表相同切片和索引的获取与列表相同无法通过索引修改与删除，字符串不可修改3-4 Python 字典常用方法1. [] 添加或修改处理法功能：添加或修改字典用法：# 字典没有索引 # 添加或修改，根据 key 是否存在所决定 dict['name'] = 'dewei'2. update 的功能与用法功能：添加新的字典如新字典中有和原字典相同的 key ，则会被新字典覆盖用法：# new_dict:新的字典,该函数无返回值 dict.update(new_dict)3. setdefault 的功能功能：获取某个 key 的 value如 key 不存在字典中，将会添加 key 并将 value 设为默认值用法：# key:需要获取的 key # value:如果 key 不存在，对应这个 key 存入字典的默认值 dice.setdefault(key,value)4. 注意事项再强调字典中每一个 key 一定是唯一的字典中的数据量没有限制字典中的 value 可以是任何 python 的内置数据类型的对象和自定义的对象5. keys 的功能功能：获取当前字典中所有的键 (key)用法：# 返回一个 key 集合的伪列表，伪列表不具备列表的所有功能 dict.keys()6. values 功能功能：获取当前字典中所有键值对中的值 (value)用法：# 返回一个 value 集合的伪列表，伪列表不具备列表的所有功能 dict.values()7. 字典 key 的获取1. [] 的获取方法：字典 + 中括号内传入 key ，不进行赋值操作，即为获取返回 key 对应的 value 值例子：name = dict['key']2. get 功能功能：获取当前字典中指定 key 的 value用法：# key:需要获取 value 的 key # default:key 不存在则返回此默认值，默认是 None,我们也可以自定义 dict.get(key,default=None)3. [] 与 get 的区别[] 如果获取的 key 不存在，则直接报错get 如果获取的 key 不存在，则返回默认值在开发中，优先使用 get 函数8. 字典删除1. clear功能功能：清空当前字典中所有数据用法：dict.clear()2. pop 功能功能：删除字典中指定的 key ，并将其结果返回如果 key 不存在则报错用法：# key:希望被删掉的键，返回这个 key 对应的值(value) dict.pop(key)3. del 在字典中的用法功能：删除字典指定的 key 或者指定的完整字典用法：dict = {'name' : 'xiaoming', 'age' : 33} del dict['name'] # 删除指定 key del dict # 删除指定字典9. copy 的功能功能：将当前字典复制一个新的字典用法：# 该函数无参数 # 返回一个一模一样的内存地址不同的字典 dict.copy()10. 字典成员运算符1. in 与 not in 在字典中的用法只能判断 key 是否存在2. get 判断成员是否存在11. popitem 功能功能：删除当前字典里末尾一组键值对并将其返回用法：# 返回被删除的键值对，用元组包裹 0 索引是 key, 1 索引是 value dict.popitem()注意：如果字典为空，则直接报错12. 数据类型与布尔值的关系每一种数据类型，自身的值都有表示 True 与 Falsenot 对于一切结果取反Python 的集合1. 什么是集合集合（set）是一个无序的不重复的元素序列常用来对两个列表进行交并差的处理性和列表一样，支持所有数据类型重复的元素会被去除2. 集合与列表的区别功能列表集合顺序有序无序内容可重复不可重复功能用于数据的获取用于数据的交集并集差集的获取索引有索引无索引符号[] [1, 2, 3]{} {1, 2, 3}3. 集合的创建通过 set 函数来创建集合，不能使用 {} 来创建空集合a_set = set() # 空集合 a_set = set([1, 2, 3]) # 传入列表或元组 b_set = {1, 2, 3} # 传入元素 c_set = {} # 空 {} 表示字典4. 集合的增删改4.1 add 的功能功能：用于在集合中添加一个元素，如果集合中已存在该元素则该函数不执行用法：set.add(item) # item:要添加的元素，无返回值4.2 update 的功能功能：加入一个新的集合（或列表，元组，字符串），如新集合的元素在原集合中存在则无视用法：set.update(iterable) # iterable:集合，无返回值，直接作用于原集合4.3 remove 的功能功能：将集合中的某个元素删除，如元素不存在将会报错用法：set.remove(item) # item:要删除的元素,无返回值，直接作用于原集合4.4 clear 的功能功能：清空当前集合中的所有元素用法：set.clear() # 无返回值，直接作用于原集合4.5 del 的功能功能：删除集合用法：del a_set # a_set:要删除的集合4.6 重要说明集合无法通过索引获取元素集合无获取元素的任何方法集合只是用来处理列表或元组的一种临时类型，他不适合存储与传输5. 获取两个集合的差集5.1 什么是差集简单说就是 a 有的，但 b 没有的a, b 两个集合，由所有属于 a 且不属于 b 的元素组成的集合叫做 a 与 b 的差集5.2 difference 的功能功能：返回集合的差集（即返回的集合元素包含在第一个集合中，但不包含在第二个集合中）用法：# b_set:当前集合需要对比的集，返回 a_set 与 b_set 的差集 a_set.difference(b_set) 示例：a_set = {'name', 'xiaomu', 'xiaoming'} b_set = {'xiaoming', 'xiaogang', 'xiaohong'} a_diff = a_set.difference(b_set) print(a_diff)6. 获取两个集合的交集6.1 什么是交集a, b 都有的就是交集a, b 两个集合分别拥有的相同的元素集，称为 a 与 b 的交集6.2 intersection 的功能功能：返回两个或更多集合中都包含的元素，即交集用法：# b_set... : 与当前集合对比的 1 或多个集合，返回原始集合与对比集合的交集 a_set.intersection(b_set...)示例：a_set = {'Python', 'PHP', 'JAVA'} b_set = {'HTML', 'IOS', 'Python'} a_inter = a_set.intersection(b_set) print(a_inter)7. 获取两个集合的并集7.1 什么是并集a, b 加在一起a, b 两个集合中所有的元素（去掉重复）即为 a 与 b 的交集7.2 union 的功能功能：返回多个集合的并集，既包含了所有集合的元素，重复的元素只会出现一次用法：# b_set... : 与当前集合对比的 1 或 多个集合，返回原始集合与对比集合的并集 a_set.union(b_set...)示例：a_set = {'Python', 'PHP', 'JAVA'} b_set = {'HTML', 'IOS', 'Python'} un = a_set.union(b_set) print(un)8. 判断两个集合中是否有相同的元素8.1 isdisjoint 的功能功能：判断两个集合是否包含相同的元素，如果没有则返回 True, 否则返回 False用法：# b_set : 与当前集合用来判断的集合，返回一个布尔值 True 或 False a_set.isdisjoint(b_set)示例：a_set = {'Python', 'PHP', 'JAVA'} b_set = {'HTML', 'IOS', 'Python'} result = a_set.isdisjoint(b_set) print(result)Python不同数据类型间的转换1. 字符串与数字的转换1.1 什么是类型转换，为何做类型转换将自身数据类型变成新的数据类型，并拥有新的数据类型的所有功能的过程即为类型转换为方便更好的帮助处理业务，将类型变更为更适合业务场景的类型1.2 字符串与数字之间转换的要求字符串转数字：要求是数字组成的字符串数字转字符串：无要求1.3 字符串与数字之间的转换函数原始类型目标类型函数举例整型字符串strnew_str = str(123456)浮点型字符串strnew_str = str(3.14)字符串整型intnew_int = int( '12')字符串浮点型floatnew float = float('1.2' )2. 字符串与列表之间的转换2.1 字符串转列表之 split 功能功能：将字符串以一定规则切割转成列表用法：# sep:切割的规则符号，不填写，默认空格，如字符串无空格则不分割生成列表 # maxsplit: 根据切割符号切割的次数，默认-1无限制 # 返回一个列表 string.split(sep=None, maxsplit=-1)示例：info = 'my name is dewei' info_list = info.split() print(info_list)2.2 列表转字符串之 join 功能功能：将列表以一定规则转成字符串用法：# sep: 生成字符串用来分割列表每个元素的符号 # iterable: 非数字类型的列表或元组或集合 # 返回一个字符串 'sep'.join(iterable)示例：test = ['a', 'b', 'c'] new_str = '.'.join(test) print(new_str)3. 字符串与 bytes 的转换3.1 什么是比特类型二进制的数据流 --- byte一种特殊的字符串字符串前 + b 标记3.2 字符串转 bytes 的函数 - encode 功能功能：将字符串转成比特 (bytes) 类型用法：# encoding: 转换成的编码格式，如ascii，gbk，默认 utf-8 # errors: 出错时的处理方法，默认strict,直接抛错误，也可以选择 ignore 忽略错误 # 返回一个比特 (bytes) 类型 string.encode(encoding='utf-8', errors='strict')示例：str_data = 'my name is dewei' byte_data = str_data.encode('utf-8') print (byte_data)3.3 bytes转字符串的函数--decode功能：将比特 (bytes) 类型转成字符串用法：# encoding: 转换成的编码格式，如ascii，gbk，默认 utf-8 # errors: 出错时的处理方法，默认strict，直接抛错误，也可以选择 ignore 忽略错误 # 返回一个字符串类型 bytes.decode(encoding='utf-8',errors='strict')示例：byte_data = b'python is good code' str_data = byte_data.decode('utf-8') print (str_data)4. 元组，列表，集合间的转换4.1 列表元组集合之间的转换函数原始类型目标类型函数举例列表集合setnew_set = set([1,2,3,4,5])列表元组tuplenew_tuple = tuple([1,2,3,4,5])元组集合setnew_set = set((1,2,3,4,5))元组列表listnew_list = list((1,2,3,4,5))集合列表listnew_list = list({1,2,3,4,5})集合元组tuplenew_tuple = tuple({1,2,3,4,5})Python 流程控制1. if 语句的功能功能：判断一个命题的真实性，如果命题为真（True) 则执行 if 的逻辑语句用法：# bool_result : 判断结果的真假，布尔类型 # do : 如果布尔为 True 时执行任意代码 # if 属于关键字，没有返回值 if bool_result : # 语法块 do # 业务代码块，注意缩进2. else 语句的功能功能：当 if 语句不满足时所执行的代码块的入口用法：# elsedo : else 语句对应的 Python 代码块 # else 属于语法，没有返回值 if bool_result : # if 语法块 do # 业务代码块，注意缩进 else : elsedo # else 语法块，需缩进3. elif 的功能功能：对于首次 if 判断不满足后，其他条件的判断语句用法：# elif 属于语法，没有返回值 if bool_result : # if 语法块 do # 业务代码块，注意缩进 elif bool_result : # elif 语法块 elifdo # 业务代码块，注意缩进 else : elsedo # else 语法块，需缩进4. 条件语句的说明条件语句中满足一个条件后，将退出当前条件语句每个条件语句中仅有且必须有一个 if 语句，可以有 0 个或多个 elif 语句，可以有 0 或1个 else 语句每个条件语句 if 必须是第一个条件语5. for 循环（遍历）功能：通过 for 关键字将列表，元组，字符串,字典中的每个元素按照序列顺序进行遍历(循环）用法：# iterable : 可循环的数据类型,如列表,元组,字符串,字典 # item : iterable 中的每一个元素（成员） # ： for 循环是语句，没有返回值，但在特定情况下有返回值 for item in iterable: # for 循环代码块 print(item) # 每次循环对应的代码块6. 字典利用 items 内置函数进行 for 循环功能：将字典转成伪列表，每个 key，value 转成元组用法：# key : for 循环体中获取的字典当前元素的 key # value : for 循环体中对应当前 key 的 value 值 # for 循环是语句，没有返回值，items 返回一个为列表 for key, value in dict.items(): print (key, value)7. range 函数功能：返回的是一个一定范围的可迭代对象，元素为整型，他不是列表，无法打印信息，但可循环用法：# start : 开始的数字，类似索引的左边 # stop : 结束的数字，类似索引的右边 # step : 跳步，类似索引中的第三个参数 # 返回一个可迭代(循环)的以整型为主的对象 for item in range(start, stop, step=1): print(item)8. else 在 for 循环中的使用else 语句只有在 fo r循环正常退出后执行循环没有报错，没有中途停止9. 嵌套 for 循环示例：# 执行流程如下：首先输出 a 变量的第一个元素，然后依次输出 b 变量所有元素，输出完毕后，再输出 a 变量第二个元素，以此类推 a = [1, 2, 3] b = [4, 5, 6] for i in a: print(i) print('-------') for j in b: print(j) print('--------')10. while 循环功能：在满足条件下会无限循环，不满足条件后将停止循环用法：# bool_result : 布尔类型，此处语法与 if 完全一致 # do : while 循环体的代码块 # while 循环是语句，没有返回值 while bool_result: do11. continue 的功能功能：循环遇到 continue 将停止本次数据循环，进入下一次循环用法：# continue: 属于语法，不需要加 () 即可，没有返回值 while bool: continue for item in iterable: continue print(item)示例：# 示例： count = 1 while count < 5: print(count) continue count += 112. break 的功能功能：使循环正常停止循环(遍历)，这时如果循环配合了 else 语句，else 语句将不执行用法：# break: 属于语法，不需要加 () 即可，没有返回值 while bool: break for item in iterable: print(item) break示例：# 示例： count = 1 while count < 5: print(count) count += 1 break函数的定义与使用1. 函数的定义将一件事情的步骤封装在一起并得到最终结果函数名代表了这个函数要做的事情函数体是实现函数功能的流程方法或功能函数可以帮助我们重复使用，通过函数名我们可以知道函数的作用2. 函数的分类内置函数自定义函数3. 通过关键字 def 定义函数def name(args...): todo something.. 返回值4. 通过关键字 def 函数执行def say_hello(): print('今天没有程序，只有笔记') say_hello() #函数名+小括号执行函数5. 函数结果的返回-- return将函数结果返回的关键字return 只能在函数体内使用return 支持返回所有的 python 类型有返回值的函数可以直接赋值给一个变量例子：def add(a, b): c = a + b return c result = add(a=1, b=1) # 参数按顺序传递 print(result)6. return 与 print 的区别print 只是单纯的将对象打印，不支持赋值语句return 是对函数执行结果的返回，也支持赋值语句7. 函数的参数7.1 必传参数函数中定义的参数没有默认值，在调用函数时如果不传入则报错在定义函数的时候，参数后边没有等号与默认值错误: def add (a=1,b=1) x总结：在定义函数的时候，没有默认值且必须在函数执行的时候传递进去的参数就是必传参数7.2 默认参数在定义函数的时候，定义的参数含有默认值，就说他是一个默认参数7.3 不确定参数——可变参数没有固定参数的函数，需要传递不确定参数 (不知道要传的参数名具体是什么)def add(*args, **kwargs): pass add(1, 2, 3, name = 'dewei', age = 33)*args 代表: 将无参数的变量合并成元组**kwargs 代表将有参数与默认值的赋值语句合并成字典7.4 参数规则def add(a, b=1, *args, **kwargs)参数的定义从左到右依次是 必传参数，默认参数，可变元组参数，可变字典参数函数的参数传递非常灵活必传参数与默认参数的传参多样化8. 函数的参数类型定义函数定义在 python 3.7 之后可用函数不会对参数类型进行验证# name: 参数名+冒号+类型函数 # age: 参数名+冒号+类型函数+等号+默认值 def person(name:str, age:int=33): print(name,age)9. 局部变量与全局变量9.1 全局变量在python脚本最上层代码块的变量全局变量可以在函数内被读取使用示例：# coding:utf-8 name = 'dewei' def test(): print(name)9.2 局部变量在函数体内定义的变量局部变量无法在自身函数以外使用# coding:utf-8 def test(): name = 'dewei' print(name) print(name)9.3 global功能：将全局变量可以在函数体内进行修改用法：# coding:utf-8 name = 'dewei' def test(): global name name = '小杨' test() # 改完不要忘了执行，否则输出的还是 dewei print(name)10. 递归函数作用：一个函数不停地将自己反复执行,类似于 while 循环用法：def test(a): print(a) return test(a) # 通过返回值，直接执行自身函数就达到了递归的效果示例：count = 0 def test(): global count count += 1 if count != 5: print('count条件不满足， 我要重新执行我自己!当前count是%s' % count) return test() else: print('count is %s' % count) test()11. lambda 匿名函数功能：定义一个轻量化函数即用即删除，很适合需要完成一项功能，但是此功能只在此一处使用用法：# 第一种方式，无参数方式 f = lambda : print('无参数方式') f() # 第二种方式,有参数方式 f = lambda x, y: x * y print(f(3, 4)) Python 面向对象与异常处理机制1. 面向对象1.1 什么是面向对象：利用 (面向)对象(属性与方法) 去进行编码的过程自定义对象数据类型就是面向对象中的类 (class) 的概念1.2 类的关键字 classclass 来声明类，类的名称首字母大小多单词情况下每个单词首字母大写（驼峰命名）1.3 类的定义用法：class Name(object): attr = something def func(self): do示例：class Cat(object): # 类的属性 color = 'black' # 类的方法（函数） def eat(self): print('我喜欢吃鱼') def sleep(self): print('我要睡觉了') cat = Cat() # 类的实例化 print(cat.color) # 通过实例化进行属性调用 cat.eat() # 通过实例化进行函数调用1.4 类的参数 selfself 是类函数中的必传参数，且必须放在第一个参数位置self 是一个对象，他代表实例化的变量自身self 可以直接通过点来定义一个类变量self 中的变量与含有 self 参数的函数可以在类中的任何一个函数内随意调用非函数中定义的变量在定义的时候不用 self1.5 类的构造函数功能：类中的一种默认函数， 用来将类实例化的同时， 将参数传入类中用法：def _init_(self, a, b): self.a = a self.b = b示例：class Like(object): # 类的属性 age = 22 # 类的方法（函数） def __init__(self, name): self.name = name def ilove(self): return '我喜欢小刘' like = Like(name='小杨') # 类的实例化,同时传入我的名字 print('大家好，我的名字是', like.name, like.ilove()) 1.6 对象的生命周期__开头__结尾的类函数都是类的默认函数2. 类中的私有函数与私有变量2.1 什么是私有函数私有变量无法被实例化后的对象调用的类中的函数与变量类内部可以调用私有函数与变量只希望类内部业务调用使用，不希望被使用者调用2.2 私有函数与私有变量的定义方法在变量或函数前添加 __ (2个下横线)，变量或函数名后边无需添加示例：class Cat(object): def __init__(self, name): self.name = name def run(self): pass def __run(self): return f'小猫 {self.name} 开心地奔跑着' def dump(self): result = self.__dump() # 此处在类内调用私有函数 print(result) def __dump(self): return f'小猫 {self.name} 开心的跳着' cat = Cat('羊羊羊') # cat.__run() 实例化会报错，私有函数（方法）无法调用，有直接输出私有函数的方法，不推荐，不做展示 cat.dump() # 由 dump() 函数调用私有函数 __dump()3. Python 中的封装将不对外的私有属性或方法通过可对外使用的函数而使用(类中定义私有的,只有类内部使用,外部无法访问这样做的主要原因: 保护私隐，明确区分内外示例：class Parent (object): def __hello(self,data): print(f'hello{data}') def helloword(self): self.__hello('world') parent = Parent() parent.helloword()4. 装饰器4.1 什么是装饰器也是一种函数可以接受函数作为参数可以返回函数接收一个函数，内部对其处理，然后返回一个新函数，动态的增强函数功能将b函数在a函数中执行，在a函数中可以选择执行或不执行b函数，也可以对b函数的结果进行二次加工处理4.2 装饰器的定义定义：def out(func_args): #外围函数 def inter(*args, **kwargs): # 内嵌函数 return func_args(*args, **kwargs) return inter #外围函数返回内嵌函数示例：def log(func): def wrapper(): print(f'call {func.__name__}') func() return wrapper @log # 调用装饰器 def hello(): print('hello world') hello() # 调用装饰器4.3 装饰器的用法将被调用的函数直接作为参数传入装饰器的外围函数括弧【例1】将装饰器与被调用函数绑定在一起@ 符号 + 装饰器函数放在被调用函数的上一行，下一行创建函数只需要直接调用被执行函数即可【例2】例 1：def a(func): def b(*args, **kwargs): return func(*args, **kwargs) return b def c(name): print(name) a(c('羊羊羊'))例 2 ：def a(func): def b(*args, **kwargs): return func(*args, **kwargs) return b @a def c(name): print(name) c('羊羊羊')5. 类的常用装饰器5.1 classmethod 的功能功能：将类函数可以不经过实例化而直接被调用用法：# cls : 替代普通类函数中的 self，变为 cls，代表当前操作的是类 @classmethod def func(cls, ...): do示例：class Test_01(object): @classmethod def add(cls, a, b): print(a + b) Test_01.add(1, 2) # 无需实例化，直接调用5.2 staticmethod 的功能功能：将类函数可以不经过实例化而直接被调用被该装饰器调用的函数不许传递self或cls参数，且无法再该函数内调用其它类函数或类变量用法：# 函数体内无 cls 或 self 参数 @staticmethod def func(...): do示例：class Test_01(object): @staticmethod def add(a, b): # 无 cls 或 self 参数 print(a + b) Test_01.add(1, 2) 5.3 property 的功能功能：将类函数的执行免去括弧，类似于调用属性( 变量 )用法：@property def func(self): do示例：class Test_01(object): def __init__(self, name): self.name = name @property def call_name(self): return f'hello {self.name}' test_01 = Test_01('小杨') # 实例化类，并传入参数 result = test_01.call_name # 使用 property 装饰器，将类函数的执行免去括弧 print(result) # 5.4 三个函数的练习class Test_01(object): def __init__(self, name): self.name = name @property def call_name(self): return f'hello {self.name}' @classmethod # cls : 替代普通类函数中的 self，变为 cls，代表当前操作的是类 def add(cls, a, b): print(a + b) @staticmethod def sta_test(a, b): # 无 cls 或 self 参数 print(a + b) # 使用 property 装饰器，将类函数的执行免去括弧 test_01 = Test_01('小杨') # 实例化类，并传入参数 result = test_01.call_name print(result) # 使用 classmethod 装饰器，无需实例化直接运行 Test_01.add(1, 4) # 使用 staticmethod 装饰器，无需实例化直接运行 Test_01.sta_test(3, 4)