Python小白语法基础19(常用模块)

[复制链接]
发表于 2024-12-2 12:16:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
0) 参考文章



  • Python常用模块大全(总结)_python模块-CSDN博客
  • Python24个常用模块,编程学习必备知识库!_python常用模块-CSDN博客
  • 小白必备:Python必须掌握的十大模块,建议收藏!_python必装的模块-CSDN博客
  • Python尺度库(非常经典的各种模块先容)_python5.6常用的尺度模块-CSDN博客
1) 常用模块阐明



  • random模块
    1. import random
    2. # (1) 生成0-1的随机浮点型数字
    3. print(random.random())  # 0-1之间的随机数
    4. print(round(random.random(), 3))  # 保留3位小数
    5. print(round(random.random() * 100))  # 0-100之间的随机数 默认不保留小数
    6. # 案例1: 投硬币
    7. # 完全随机 一样一半的
    8. def flip_coin():
    9.     if random.random() >= 0.5:
    10.         return "heads"
    11.     else:
    12.         return "tails"
    13. print(flip_coin())
    14. # (2) random.randint:返回a-b范围内的随机整形数字
    15. print(random.randint(1, 100))  # 指定范围 随机返回整型数字
    16. print(random.randint(1, 2))
    17. # 案例2: 掷骰子
    18. def roll_dice():
    19.     return random.randint(1, 6)
    20. print(roll_dice())
    21. # (3) random.choice:对于一个序列对象随机选择一个元素
    22. print(random.choice([11, 22, 33, 44, 55]))  # 对一个容器对象 随机选择元素
    23. # 案例3:
    24. def draw_prize():
    25.     participants = ['Alice', 'Bob', 'Charlie', 'David', 'Eve']
    26.     return random.choice(participants)
    27. print(draw_prize())
    28. # (4) random.sample:对于一个序列对象随机选择多个元素
    29. print(random.sample([11, 22, 33, 44, 55], 3))  # 选择三个元素
    30. def draw_prize():
    31.     participants = ['Alice', 'Bob', 'Charlie', 'David', 'Eve']
    32.     return random.sample(participants, 3)
    33. print(draw_prize())
    34. # 案例4:
    35. # 构建红色球
    36. ret = random.sample(range(1, 34), 6)  # 在1-34个元素中选择六个
    37. ret = [str(i) for i in ret]  # 将选择的元素转化成字符保存进列表中
    38. # j加入蓝色球
    39. ret.append(str(random.randint(1, 16)))  # 在1-16中选择一个
    40. # print(ret)
    41. # ret容器中有七个元素,前六个是红球 最后一个是蓝色球
    42. # join拼接前六个元素
    43. print(f"红色球:{' '.join(ret[:-1])} \n蓝色球:{ret[-1]}")
    44. # (5) random.shuffle:打散顺序
    45. l = [1, 2, 3, 4, 5]
    46. random.shuffle(l)  # 乱序
    47. print(l)
    48. # 案例5:
    49. def get_pokes():
    50.     poke_list = []
    51.     poke_types = ['♥️', '♦️', '♠️', '♣️']
    52.     poke_nums = [2, 3, 4, 5, 6, 7, 8, 9, 10, 'J', 'Q', 'K', 'A']
    53.     for p_type in poke_types:
    54.         for p_num in poke_nums:
    55.             poke_list.append(f"{p_type}{p_num}")
    56.     return poke_list
    57. poke_list = get_pokes()
    58. random.shuffle(poke_list)  # 乱序输出
    59. print(poke_list)
    复制代码
  • time模块
    1. import time
    2. """
    3. 1. 时间字符串: "2020/12 微博图片/12 微博图片"
    4. 2. 时间元组对象 : (2024,2,13,...)
    5. 3. 时间戳:
    6.    1970 1 1 0:0:0     0
    7.    1970 1 1 0:1:0     60s
    8.    1970 1 1 0:2:0     120s
    9.    1970 1 1 1:0:0     3600s
    10. """
    11. # (1) time.time():获取当前时间的时间戳
    12. print(time.time())  # 1728967581.212483
    13. print(time.time() / 3600 / 24 / 365)  # 54.82520234692044
    14. # (2) time.sleep(10):让程序阻塞n秒钟
    15. print("start")
    16. time.sleep(1)  # 阻塞IO输入输出1秒
    17. print("end")
    18. # (3) 获取当前时间元组对象
    19. print(
    20.     time.localtime())  # time.struct_time(tm_year=2024, tm_mon=10, tm_mday=15, tm_hour=12 微博图片, tm_min=48, tm_sec=21, tm_wday=1, tm_yday=289, tm_isdst=0)
    21. print(time.localtime()[0])  # 2024年
    22. print(time.localtime()[1])  # 10月
    23. print(time.localtime()[2])  # 15日
    24. print("星期", time.localtime()[6] + 1)  # 周2
    25. # (4) 时间戳和时间元组对象的相互转换
    26. # mktime: 将structtm时间结构体转换为自1970年1月1日起的秒数
    27. print(time.mktime(time.localtime()))  # 1728967701.0
    28. print(time.time())  # 1728967701.4755197  十位时间戳
    29. print(time.gmtime(1707815699.0))  # time.struct_time(tm_year=2024, tm_mon=2, tm_mday=13, tm_hour=9, tm_min=14, tm_sec=59, tm_wday=1, tm_yday=44, tm_isdst=0)
    30. # (5) 将元组对象转为指定格式的时间字符串
    31. # strftime: 日期时间对象转换为指定格式的字符串
    32. print(time.strftime("%Y-%m-%d %H,%M,%S", time.localtime()))  # 2024-10-15 12 微博图片,48,21
    33. print(time.strftime("%Y-%m-%d %X", time.localtime()))  # 2024-10-15 12 微博图片:48:21
    复制代码
  • datetime模块
    1. import datetime
    2. datetime.time
    3. datetime.date
    4. datetime.datetime
    5. datetime.timedelta
    6. # datetime.datetime:
    7. # (1) 创建日期对象
    8. # 获取当前日期对象
    9. now = datetime.datetime.now()
    10. print(now, type(now))  # 2024-10-15 12 微博图片:58:03.991463 <class 'datetime.datetime'>
    11. today = datetime.datetime.today()
    12. print(today, type(today))  # 2024-10-15 12 微博图片:58:03.992461 <class 'datetime.datetime'>
    13. # # 创建任意日期对象
    14. my_datetime = datetime.datetime(2020, 12, 23, 10, 0, 0)
    15. print("my_datetime:", my_datetime, type(my_datetime))  # my_datetime: 2020-12 微博图片-23 10:00:00 <class 'datetime.datetime'>
    16. # (2) datetime对象的属性  对象.变量名
    17. now = datetime.datetime.now()
    18. print(now.year)  # 2024
    19. print(now.month)  # 10
    20. print(now.day)  # 15
    21. print(now.hour)  # 12 微博图片
    22. print(now.minute)  # 58
    23. print(now.second)  # 3
    24. my_datetime = datetime.datetime(2020, 12, 23, 10, 0, 0)
    25. print(my_datetime.year)  # 2020
    26. print(my_datetime.month)  # 12 微博图片
    27. print(my_datetime.day)  # 23
    28. print(my_datetime.hour)  # 10
    29. print(my_datetime.minute)  # 0
    30. print(my_datetime.second)  # 0
    31. # (3) datetime对象和格式化字符串转换
    32. # 将对象转为字符串
    33. now = datetime.datetime.now()
    34. s = now.strftime("%Y/%m/%d %H:%M:%S")
    35. print(s)  # 2024/10/15 12 微博图片:58:03
    36. # 将字符串转为对象
    37. timer = "2020 12 微博图片 20 10:0:0"
    38. parsed_datetime = datetime.datetime.strptime(timer, "%Y %m %d %H:%M:%S")
    39. print("parsed_datetime:", parsed_datetime)  # parsed_datetime: 2020-12 微博图片-20 10:00:00
    40. print("parsed_datetime:", parsed_datetime.year)  # parsed_datetime: 2020
    41. print("parsed_datetime:", parsed_datetime.month)  # parsed_datetime: 12 微博图片
    复制代码
    1. import datetime
    2. # 二: datetime.date类
    3. # (1) 创建日期对象
    4. today = datetime.date.today()
    5. print(today)  # 2024-10-15
    6. my_date = datetime.date(2020, 12, 20)
    7. print("my_date:", my_date, type(my_date))  # my_date: 2020-12 微博图片-20 <class 'datetime.date'>
    8. # (2) 对象的属性
    9. print(today.year)  # 2024
    10. print(today.month)  # 10
    11. print(today.day)  # 15
    12. # (3) 将日期对象转为格式化字符串
    13. ret = my_date.strftime("%Y/%m/%d")
    14. print(ret)  # 2020/12 微博图片/20
    15. # 二: datetime.timedelta:时间间隔
    16. # 案例1
    17. my_date01 = datetime.date(2020, 12, 20)
    18. my_date02 = datetime.date(2022, 1, 20)
    19. delta = my_date02 - my_date01
    20. print(delta.days)  # 两个日期之间的间隔天数 396
    21. print(delta.total_seconds())  # 34214400.0  间隔的秒数
    22. # 案例2
    23. now = datetime.datetime.now()
    24. f_datetime = now + datetime.timedelta(weeks=1)  # 当前时间 + 1周
    25. print(f_datetime)  # 2024-10-22 13:02:01.335911
    26. b_datetime = now - datetime.timedelta(weeks=4)  # 当前时间 - 4周
    27. print(b_datetime)  # 2024-09-17 13:02:01.335911
    复制代码
  • sys模块
    1. import sys
    2. # (1) 查询解释器的版本信息
    3. print(sys.version) # 3.9.12 微博图片 (tags/v3.9.12 微博图片:b28265d, Mar 23 2022, 23:52:46) [MSC v.1929 64 bit (AMD64)]
    4. # (2) 退出程序
    5. # sys.exit(0)  # 退出当前运行的程序
    6. print("OK")
    7. # (3) sys.argv
    8. # sys.argv: 运行文件时,运行对应的参数
    9. print(sys.argv)
    10. user = input("请输入用户名:")
    11. pwd = input("请输入密码:")
    12. print(user, pwd)
    13. # 终端处运行 打印对应的元素,从1开始的索引
    14. # user = sys.argv[1]
    15. # pwd = sys.argv[2]
    16. # print(user, pwd)
    复制代码
  • os模块
    1. import os
    2. # 一、文件和目录操作
    3. # (1) os.getcwd(): 获取当前工作目录的路径。
    4. print(os.getcwd())  # F:\python\02 python进阶\03 常用模块
    5. # (2) `os.chdir(path)`: 修改当前工作目录为指定路径。
    6. os.chdir("..")
    7. # os.chdir("../Day08:文件操作")
    8. print(os.getcwd())  # F:\python\02 python进阶
    9. # (3) os.listdir(path): 返回指定目录中的文件和目录列表。
    10. # print(os.listdir("/Users/yuanhao/PycharmProjects/Python全栈开发V3版/模块2:Python进阶/Day08:文件操作"))
    11. # (4) os.mkdir(path): 创建一个新的目录。
    12. # os.mkdir("apple")
    13. # (5) os.makedirs(path): 递归创建目录,包括中间目录。
    14. # os.makedirs("apple/banana/peach")
    15. # (6) os.remove(path): 删除指定的文件。
    16. # os.remove("abc.txt")
    17. # (7) os.removedirs(path): 递归删除目录,包括所有子目录。
    18. os.removedirs("apple/banana/peach")
    19. # (8) os.rename(src, dst): 将文件或目录从src重命名为dst。
    20. # os.rename("apple.txt","banana.txt")
    复制代码
    1. import os
    2. # 二、操作系统命令
    3. # (1) os.system(command): 执行操作系统命令。
    4. os.system("ls")
    5. os.system("ifconfig")
    6. # (2) os.popen(command): 执行操作系统命令,并返回一个文件对象。
    7. ret = os.popen("ls")
    8. print(ret.read())
    9. ret = os.popen("ifconfig")
    10. print(ret.read())
    11. os.popen("touch hello.txt")
    12. # 三、路径操作
    13. # (1) `os.path.join(path1, path2, ...)`: 将多个路径组合成一个路径。
    14. l = ["a","b","c"]
    15. print("\".join(l))
    16. print(os.path.join("a","b","c"))
    17. print(os.path.sep)
    18. # (2) 将路径分割成目录和文件名。
    19. ret  = os.path.split("/Users/yuanhao/PycharmProjects/Python全栈开发V3版/模块2:Python进阶/Day09:常用模块/01 random模块.py")
    20. print(ret)
    21. # (3) `os.path.dirname(path)`: 返回路径的目录部分。`os.path.basename(path)`: 返回路径的文件名部分。
    22. path = "/Users/yuanhao/PycharmProjects/Python全栈开发V3版/模块2:Python进阶/Day09:常用模块/01 random模块.py"
    23. print(os.path.basename(path))
    24. print(os.path.dirname(path))
    25. # (4) `os.path.exists(path)`: 检查路径是否存在。
    26. print(os.path.exists("/Users/yuanhao/PycharmProjects/Python全栈开发V3版/模块2:Python进阶/Day09:常用模块/banana.txt"))
    复制代码
  • json模块
    1. import json
    2. # 序列化 :将本语言支持的高级数据对象转为json格式字符串的过程
    3. num = 3.14
    4. name = 'yuan'
    5. l = [1, 2, 3]
    6. t = (4, 5, 6)
    7. d = {'name': "yuan", 'age': 18, "is_married": False, "gf": None}
    8. print(repr(json.dumps(num)))  # '3.14'
    9. print(repr(json.dumps(name)))  # '"yuan"'
    10. print(repr(json.dumps(l)))  # '[1, 2, 3]'
    11. print(repr(json.dumps(t)))  # '[4,5,6]'
    12. print(repr(json.dumps(d)))  # '{"name":"yuan","age":18,"is_married":false,"gf":null}'
    13. # 存储和传输
    14. # 反序列化:将json格式字符串转为本语言支持的数据对象格式
    15. # 案例1
    16. d = {'name': "yuan", 'age': 18, "is_married": False, "gf": None}
    17. json_d = json.dumps(d)
    18. print(json_d, type(json_d))  # {"name": "yuan", "age": 18, "is_married": false, "gf": null} <class 'str'>
    19. data = json.loads(json_d)
    20. print(data, type(data))  # {'name': 'yuan', 'age': 18, 'is_married': False, 'gf': None} <class 'dict'>
    21. name = data.get("name")
    22. print(name)  # yuan
    23. # 思考:
    24. # 案例2:
    25. s = '{"name":"yuan","age":18,"isMarried":False}'
    26. #  重点:反序列化前提数据得是json格式的字符串
    27. # data = json.loads(s)  # 报错, 类型错误 不能转
    28. print(data, type(data))  # {'name': 'yuan', 'age': 18, 'is_married': False, 'gf': None} <class 'dict'>
    29. s2 = '[{"name":"yuan","age":18,"isMarried":false},{"name":"rain","age":28,"isMarried":true}]'
    30. data2 = json.loads(s2)
    31. print(data2, type(data2))  # [{'name': 'yuan', 'age': 18, 'isMarried': False}, {'name': 'rain', 'age': 28, 'isMarried': True}] <class 'list'>
    32. print(data2[1].get("name"))  # rain
    复制代码
    1. import json
    2. # 持久化存储
    3. # (1) 序列化
    4. with open("data.json", mode="w") as f:
    5.     data = {'name': "yuan", 'age': 18, "is_married": False, "gf": None}
    6.     # 方式1
    7.     # data_json = json.dumps(data)
    8.     # data_json = str(data)
    9.     # f.write(data_json)
    10.     # 方式2
    11.     json.dump(data, f)
    12. # (2) 反序列化
    13. with open("data.json") as f:
    14.     # 方式1
    15.     # data_json = f.read()
    16.     # print(data_json, type(data_json))
    17.     # data_dict = json.loads(data_json)
    18.     # 方式2
    19.     data_dict = json.load(f)
    20.     print(data_dict, type(data_dict))
    复制代码
    1. """
    2. JS实现的序列化:对对象处理
    3. data = {user:"yuan",pwd:123}
    4. {user: 'yuan', pwd: 123}
    5. data
    6. {user: 'yuan', pwd: 123}
    7. // 序列化
    8. undefined
    9. JSON.stringify(data)
    10. '{"user":"yuan","pwd":123}'
    11. """
    12. import json
    13. s = '{"user":"yuan","pwd":123}'
    14. # (1) 反序列化请求数据
    15. data = json.loads(s)
    16. print(data, type(data))  # {'user': 'yuan', 'pwd': 123} <class 'dict'>
    17. user = data.get("user")
    18. pwd = data.get("pwd")
    19. # 数据库筛选
    20. user = {
    21.     "name": "苑昊",
    22.     "email": '123@qq.com',
    23.     "gender": "male"
    24. }
    25. # (2) 序列化响应数据
    26. res = json.dumps(user)
    27. print(repr(res), type(res))  # '{"name": "\\u82d1\\u660a", "email": "123@qq.com", "gender": "male"}' <class 'str'>
    28. """
    29. res = '{"name": "\\u82d1\\u660a", "email": "123@qq.com", "gender": "male"}'
    30. // 反序列化
    31. // JSON.parse(res)
    32. // {name: '苑昊', email: '123@qq.com', gender: 'male'}
    33. res = JSON.parse(res)
    34. {name: '苑昊', email: '123@qq.com', gender: 'male'}
    35. res.name
    36. '苑昊'
    37. res.email
    38. '123@qq.com'
    39. """
    复制代码
    1. import json
    2. # 案例1
    3. user = {
    4.     "name": "苑昊",
    5.     "email": '123@qq.com',
    6.     "gender": "male"
    7. }
    8. print(repr(json.dumps(user, ensure_ascii=False)))  # '{"name": "苑昊", "email": "123@qq.com", "gender": "male"}'
    9. # 案例2
    10. data = {
    11.     1000: "apple",
    12.     2000: "banana",
    13.     3000: "peach",
    14. }
    15. print(repr(json.dumps(data)))  # '{"1000": "apple", "2000": "banana", "3000": "peach"}'
    16. with open("data.json","w") as f:
    17.     json.dump(data,f)
    18. with open("data.json") as f:
    19.     data = json.load(f)
    20.     print(data)  # {'1000': 'apple', '2000': 'banana', '3000': 'peach'}
    21. print({int(k): v for k, v in data.items()})  # {1000: 'apple', 2000: 'banana', 3000: 'peach'}
    22. # 案例3
    23. user = {
    24.     "name": "苑昊",
    25.     "email": '123@qq.com',
    26.     "gender": "male"
    27. }
    28. # separators: 设置键值对之间的分隔符
    29. print(repr(json.dumps(user, ensure_ascii=False,separators=(",",":"))))
    30. # '{"name":"苑昊","email":"123@qq.com","gender":"male"}'
    31. print(len('{"name":"苑昊","email":"123@qq.com","gender":"male"}'))  # 50
    复制代码
  • 日志日志模块: logger
    1. from loguru import logger
    2. # 默认的输出格式是:时间、级别、模块、行号以及日志日志内容。
    3. # 取消控制台输出流
    4. logger.remove(0)
    5. logger.add("mylog.log", level="WARNING", rotation="200 B")
    6. # 日志日志记录
    7. logger.debug("这是一条测试日志")
    8. logger.info("这是一条正常日志")
    9. logger.success("这是一条成功日志")
    10. logger.warning("这是一条警告日志")
    11. logger.error("这是一条错误日志")
    12. logger.critical("这是一条严重错误日志")
    复制代码
    1. from loguru import logger
    2. import sys
    3. # 默认的输出格式是:时间、级别、模块、行号以及日志内容。
    4. logger.configure(handlers=[
    5.     {
    6.         # 控制台
    7.         "sink": sys.stderr,
    8.         "format": "<g>{time}</> <lvl>{level:10}</> |<c>{module:10}</>: {line:4} | <lvl>{message}</>",
    9.         # "colorize": False,
    10.         "level": "WARNING"
    11.     },
    12.     {
    13.         #  日志文件
    14.         "sink": "myLog2.log",
    15.         "format": "<g>{time}</> <lvl>{level:10}</> | <c>{module:10}</>:{line:4} | <lvl>{message}</>",
    16.         # "colorize": False,
    17.         "level": "ERROR"
    18.     }
    19. ])
    20. logger.add("myLog2.log", rotation="200 B")
    21. # 日志记录
    22. logger.debug("这是一条测试日志")
    23. logger.info("这是一条正常日志")
    24. logger.success("这是一条成功日志")
    25. logger.warning("这是一条警告日志")
    26. logger.error("这是一条错误日志")
    27. logger.critical("这是一条严重错误日志")
    复制代码


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

使用道具 举报

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5

GMT+8, 2025-7-13 00:07 , Processed in 0.080455 second(s), 28 queries 手机版|qidao123.com技术社区-IT企服评测▪应用市场 ( 浙ICP备20004199 )|网站地图

快速回复 返回顶部 返回列表