ToB企服应用市场:ToB评测及商务社交产业平台

标题: day12-内置模块和开辟规范 [打印本页]

作者: 泉缘泉    时间: 2024-5-16 13:25
标题: day12-内置模块和开辟规范
1. 内置模块

1.1 json

json模块,是python内部的一个模块,可以将python的数据格式 转换为json格式的数据,也可以将json格式的数据转换为python的数据格式。
json格式,是一个数据格式(本质上就是个字符串,常用语网络数据传输)
  1. # Python中的数据类型的格式
  2. data = [
  3.     {"id": 1, "name": "武沛齐", "age": 18},
  4.     {"id": 2, "name": "alex", "age": 18},
  5.     ('wupeiqi',123),
  6. ]
  7. # JSON格式
  8. value = '[{"id": 1, "name": "武沛齐", "age": 18}, {"id": 2, "name": "alex", "age": 18},["wupeiqi",123]]'
复制代码
1.1.1 核心功能

json格式的作用?
  1. 跨语言数据传输,例如:
  2.         A系统用Python开发,有列表类型和字典类型等。
  3.         B系统用Java开发,有数组、map等的类型。
  4.         语言不同,基础数据类型格式都不同。
  5.        
  6.         为了方便数据传输,大家约定一个格式:json格式,每种语言都是将自己数据类型转换为json格式,也可以将json格式的数据转换为自己的数据类型。
复制代码

Python数据范例与json格式的相互转换:
练习题

1.1.2 范例要求

python的数据范例转换为 json 格式,对数据范例是有要求的,默认只支持:
  1.     +-------------------+---------------+
  2.     | Python            | JSON          |
  3.     +===================+===============+
  4.     | dict              | object        |
  5.     +-------------------+---------------+
  6.     | list, tuple       | array         |
  7.     +-------------------+---------------+
  8.     | str               | string        |
  9.     +-------------------+---------------+
  10.     | int, float        | number        |
  11.     +-------------------+---------------+
  12.     | True              | true          |
  13.     +-------------------+---------------+
  14.     | False             | false         |
  15.     +-------------------+---------------+
  16.     | None              | null          |
  17.     +-------------------+---------------+
复制代码
  1. data = [
  2.     {"id": 1, "name": "武沛齐", "age": 18},
  3.     {"id": 2, "name": "alex", "age": 18},
  4. ]
复制代码
其他范比方果想要支持,需要自定义JSONEncoder 才能实现【目前只需要相识大概意思即可,以后项目开辟中用到了还会讲解。】,比方:
  1. import json
  2. from decimal import Decimal
  3. from datetime import datetime
  4. data = [
  5.     {"id": 1, "name": "武沛齐", "age": 18, 'size': Decimal("18.99"), 'ctime': datetime.now()},
  6.     {"id": 2, "name": "alex", "age": 18, 'size': Decimal("9.99"), 'ctime': datetime.now()},
  7. ]
  8. class MyJSONEncoder(json.JSONEncoder):
  9.     def default(self, o):
  10.         if type(o) == Decimal:
  11.             return str(o)
  12.         elif type(o) == datetime:
  13.             return o.strftime("%Y-%m-%d")
  14.         return super().default(o)
  15. res = json.dumps(data, cls=MyJSONEncoder)
  16. print(res)
复制代码
1.1.3 其他功能

json模块中常用的是:
1.2 时间处理处罚

Python中关于时间处理处罚的模块有两个,分别是time和datetime。
1.2.1 time
  1. import time
  2. # 获取当前时间戳(自1970-1-1 00:00)
  3. v1 = time.time()
  4. print(v1)
  5. # 时区
  6. v2 = time.timezone
  7. # 停止n秒,再执行后续的代码。
  8. time.sleep(5)
复制代码
1.2.2 datetime

在寻常开辟过程中的时间一般是以为如下三种格式存在:

练习题

1.3 正则表达式干系

当给你一大堆文本信息,让你提取其中的指定数据时,可以利用正则来实现。比方:提取文本中的邮箱和手机号
  1. import re
  2. text = "楼主太牛逼了,在线想要 442662578@qq.com和xxxxx@live.com谢谢楼主,手机号也可15131255789,搞起来呀"
  3. phone_list = re.findall("1[3|5|8|9]\d{9}", text)
  4. print(phone_list)
复制代码
1.3.1 正则表达式

1. 字符干系

2. 数量干系

3. 括号(分组)

4. 起始和结束

上述示例中都是去一段文本中提取数据,只要文本中存在即可。
但,如果要求用户输入的内容必须是指定的内容开头和末端,比就需要用到如下两个字符。
  1. import re
  2. text = "啊442662578@qq.com我靠"
  3. email_list = re.findall("^\w+@\w+.\w+$", text, re.ASCII)
  4. print(email_list) # []
复制代码
  1. import re
  2. text = "442662578@qq.com"
  3. email_list = re.findall("^\w+@\w+.\w+$", text, re.ASCII)
  4. print(email_list) # ['442662578@qq.com']
复制代码
这种一般用于对用户输入数据格式的校验比较多,比方:
  1. import re
  2. text = input("请输入邮箱:")
  3. email = re.findall("^\w+@\w+.\w+$", text, re.ASCII)
  4. if not email:
  5.     print("邮箱格式错误")
  6. else:
  7.     print(email)
复制代码
5. 特殊字符

由于正则表达式中 *  .  \ { } ( )  等都具有特殊的含义,所以如果想要在正则中匹配这种指定的字符,需要转义,比方:
  1. import re
  2. text = "我是你{5}爸爸"
  3. data = re.findall("你{5}爸", text)
  4. print(data) # []
复制代码
  1. import re
  2. text = "我是你{5}爸爸"
  3. data = re.findall("你\{5\}爸", text)
  4. print(data)     # ['你{5}爸']
复制代码
1.3.2 re模块

python中提供了re模块,可以处理处罚正则表达式并对文本进行处理处罚。
小结

到此,关于最常见的内置模块就全部讲完了(共11个),现阶段只需要掌握这些模块的利用即可,在后续的课程和练习题中也会涉及到一些其他内置模块。
2. 项目开辟规范

现阶段,我们在开辟一些步伐时(终端运行),应该遵循一些结构的规范,让你的体系更加专业。
2.1 单文件应用

当基于python开辟简朴应用时(一个py文件就能搞定),需要注意如下几点。
  1. """
  2. 文件注释
  3. """
  4. import re
  5. import random
  6. import requests
  7. from openpyxl import load_workbook
  8. DB = "XXX"
  9. def do_something():
  10.     """ 函数注释 """
  11.     # TODO 待完成时,下一期实现xxx功能
  12.     for i in range(10):
  13.         pass
  14. def run():
  15.     """ 函数注释 """
  16.     # 对功能代码进行注释
  17.     text = input(">>>")
  18.     print(text)
  19. if __name__ == '__main__':
  20.     run()
复制代码

2.2 单可实行文件

新创建一个项目,假设名字叫 【crm】,可以创建如下文件和文件夹来存放代码和数据。
  1. crm
  2. ├── app.py        文件,程序的主文件(尽量精简)
  3. ├── config.py     文件,配置文件(放相关配置信息,代码中读取配置信息,如果想要修改配置,即可以在此修改,不用再去代码中逐一修改了)
  4. ├── db            文件夹,存放数据
  5. ├── files         文件夹,存放文件
  6. ├── src           包,业务处理的代码
  7. └── utils         包,公共功能
复制代码

2.3 多可实行文件

新创建项目,假设名称叫【killer】,可以创建如下文件和文件夹来存放代码和数据。
  1. killer
  2. ├── bin                                        文件夹,存放多个主文件(可运行)
  3. │   ├── app1.py
  4. │   └── app2.py
  5. ├── config              包,配置文件
  6. │   ├── __init__.py
  7. │   └── settings.py
  8. ├── db                  文件夹,存放数据
  9. ├── files               文件夹,存放文件
  10. ├── src                 包,业务代码
  11. │   └── __init__.py
  12. └── utils               包,公共功能
  13.     └── __init__.py
复制代码

总结

作业:开辟短视频资讯平台


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4