Python---包和模块

[复制链接]
发表于 2026-1-30 13:23:09 | 显示全部楼层 |阅读模式

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

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

×
文章目次

   

  • 目次
    前言
    一.包和模块概念
    二._name_属性
    三.模块
    UUID模块
    数学模块
    数学常数
     数值运算
     随机数模块
    操纵体系模块
     文件路径模块
     python体系模块
    时间模块
    哈希_加密模块 

  
前言

包和模块的告急作用是构造和管理代码,使得代码更加模块化和可重用。通过使用包和模块,可以将代码分解成更小的部门,进步代码的可读性和维护性。

一.包和模块概念

        在Python中,包(package)是一种构造Python模块的方法。包是一个目次,目次中包罗一个特殊的文件__init__.py,该文件将目次标识为一个包。一个包可以包罗多个模块和子包。
模块(module)是一个Python文件,包罗可实行的代码。模块可以界说函数、类和变量,可以被其他模块调用和使用。
常见导入包的方式:
        在Python中,使用import语句导入包或模块,然后使用包或模块中界说的函数、类和变量。
比方,如果有一个名为math的包,此中包罗一个名为add的模块,可以使用以下代码导入并调用此中的函数:
  1. 方法一:
  2. import math.add
  3. result = math.add.sum(1, 2)
  4. print(result)
  5. 方法二:
  6. from math import math
  7. 方法三:从包中导入所有模块
  8. from math import *
复制代码
二._name_属性

当一个模块直接被运行时(而不是被导入到其他模块中),__name__属性的值会被主动设置为__main__。如许可以用来判定一个模块是被直接运行照旧被导入到其他模块运行中。
比方,假设有一个名为module.py的模块,此中包罗以下代码:
  1. module包含的代码如下
  2. def my_func():
  3.     函数代码
  4. if __name__ == "__main__":
  5.     print("这个模块被直接运行")
  6. else:
  7.     print("这个模块被导入其它模块中")
复制代码
 如果直接运行module.py,则输出为:"这个模块被直接运行",由于__name__属性的值此时是__main__。如果将module.py导入到另一个模块中运行,则输出为:"这个模块被导入别的模块中",由于__name__属性的值此时是module。
三.模块

UUID模块

   uuid:模块用于天生唯一的标识符。
  数学模块

   math:提供了一系列用于实行数值盘算和数学运算的函数。如下所示
  数学常数

  1. import math
  2. 自然常数 e
  3. print(math.e)                     输出:2.718281828459045
  4. 自然常数 Π
  5. print(math.pi)                    输出:3.141592653589793
复制代码
 数值运算

  1. import math
  2. 开平方
  3. print(math.sqrt(16))              输出:4.0
  4. 绝对值
  5. print(math.fabs(-16))             输出:16.0
  6. 求余数
  7. print(math.fmod(10,3))            输出:1.0
  8. 求幂次方
  9. print(math.pow(10,3))             输出:1000.0
  10. 向上取整
  11. print(math.ceil(10.0001))         输出:11、0
  12. 向下取整
  13. print(math.floor(10.0001))        输出:10、0
  14. 四舍五入
  15. print(round(10.0001))             输出:10、0    整数部分为偶数.5会被舍去
  16. 传入的变量是数字返回假.反之true
  17. print(math.isnan(10.6))           输出:false
  18. 传入数字是无限值返回true 反之返回false
  19. print(math.isfinite(math.pi))     输出:true
复制代码
 随机数模块

   random:,用于天生随机数,用于天生随机整数、随机浮点数、随机选择等。
  1. import random
  2. 返回一个[a,b]之间的随机整数
  3. print(random.randint(0,100))
  4. 产生(0,1)之间的随机数
  5. print(random.random())
  6. 随机返回非空序列中的一个元素
  7. print(random.choice([1,2,3,4]))
  8. 以指定步长随机返回非空序列中的元素
  9. print(random.randrange(0,100,5))
复制代码
操纵体系模块

    os:提供了很多函数来举行文件和目次的管理、历程管理、情况变量的获取等操纵。
  1. 获取当前文件路径
  2. print(os.getcwd())
  3. 切换当前工作路径 相当于 cd命令
  4. print(os.chdir("/"))
  5. 获取当前文件的相绝对路径,相当于pwd命令
  6. print(os.path.abspath(os.curdir))
  7. 修改文件或目录权限
  8. os.chmod('file.txt', 0o444)     更改文件权限为只读,参考Linux,0o代表采用八进制
  9. 返回当前设备对应线程数
  10. print(os.cpu_count())
  11. 获取当前脚本的进程号
  12. print(os.getpid())
  13. 获取父进程的进程号
  14. print(os.getppid())
  15. 关闭进程
  16. os.kill(111,13)       11:需要关闭的进程号      13:关闭程序的进程号
  17. 列出指定文件夹中的内容
  18. print(os.listdir(文件夹路径))
  19. 创建目录    参考makdir  可用相对/绝对路径创建
  20. print(os.makedirs("a/b/c"))
  21. 输出目录路径分隔符  Linux->"/"  windos-->""
  22. print(f"a{os.sep}b{os.sep}c")    输出:a\b\c
  23. 删除文件
  24. os.remove(相对/绝对路径)
  25. 从最后路径中最后一个目录开始删除非空目录,无法删除非空目录
  26. os.removedirs("a/b/c")
  27. 删除整个目录包括文件
  28. import shutil
  29. shutil.rmtree("a")
  30. 执行终端命令,该命令可以调用windows或Linux系统命令
  31. os.system("ls")
复制代码
 文件路径模块

   os.path:模块提供了一些函数用于处置惩罚文件路径和文件名。
  1. from os.path import *
  2. s = "/Users/123/text.txt"
  3. 获取指定路径下的文件名
  4. print(basename(s))        输出:text.txt
  5. 获取指定文件的路径信息
  6. print(dirname(s))         输出:/Users/123
  7. 判断文件是否存在
  8. print(exists(s))          输出:False
  9. 获取文件大小
  10. print(getsize("a/b/zt.txt"))
  11. 判断路径是不是目录
  12. isdir()
  13. 判断路径是不是文件
  14. isfile()
  15. 判断传入的路径是不是软链接
  16. islink()
  17. 判断是不是挂载文件
  18. ismount
  19. 拼接路径
  20. d = "/Users/music"
  21. f = "123.txt"
  22. path = join(d, f)              输出:/Users/music/123.txt
  23. print(split(path))             输出:('/Users/music', '123.txt')
复制代码
  1. 遍历指定路径下的目录和子目录
  2. os.walk(top, topdown=True)
  3. top:要遍历的目录路径。
  4. topdown:True,先遍历top目录,然后遍历其子目录;False,先遍历子目录,再遍历top目录。
  5. 返回值:返回一个生成器对象,每次迭代返回一个三元组(dirpath, dirnames, filenames),其中:
  6. dirpath:字符串,当前遍历到的目录的路径。
  7. dirnames:列表,当前目录下的子目录列表。
  8. filenames:列表,当前目录下的文件列表
复制代码
   演示案例:在Linux中读取指定路径下目次以及子目次
  1. import os
  2. def read_files_in_directory(directory):
  3.     # 遍历指定目录
  4.     for root, dirs, files in os.walk(directory):
  5.         for file in files:
  6.             # 构造文件的完整路径
  7.             file_path = os.path.join(root, file)
  8.             print(f"文件路径: {file_path}")
  9.             # 尝试读取文件内容
  10.             try:
  11.                 with open(file_path, 'r', encoding='utf-8') as f:
  12.                     content = f.read(100)  # 读取前100个字符
  13.                     print(f"文件内容(前100个字符): {content}")
  14.             except Exception as e:
  15.                 print(f"无法读取文件 {file_path}: {e}")
  16.             # 调用函数,传入/data目录
  17. read_files_in_directory('/data')
复制代码
 python体系模块

   sys模块是Python的一个内置模块,它提供了对Python表明器的访问和控制。
  1. from sys import *
  2. 显示api版本
  3. print(api_version)
  4. #输出cpython版本信息
  5. print(copyright)
  6. 显示python版本信息
  7. print(version)
  8. 将运行脚本用到的参数保存到列表中
  9. print(argv)
  10. 获取python默认编码
  11. print(getdefaultencoding())
  12. 获取文件系统默认编码
  13. print(getfilesystemencoding())
复制代码
时间模块

   time:time模块是Python标准库中的一个模块,它提供了一些与时间干系的功能。
  1. import time
  2. 将运行到此行代码的时间点返回
  3. print(time.time())
  4. 获取本地时间
  5. print(localtime())
  6. 将时间对象转化为指定格式的字符串
  7. print(time.strftime("%Y-%m-%d %H:%M:%S", localtime())) 输出:2024-09-05 15:08:47
  8. 将时间字符串转化为指localtime
  9. print(strptime("2024-09-05 15:08:47","%Y-%m-%d %H:%M:%S"))
  10. 延迟函数
  11. sleep(秒)
复制代码
   演示案例:数字时钟代码
  1. from time import  *
  2. while True:
  3.     time = strftime("%Y-%m-%d %H:%M:%S", localtime())
  4.     print("\r"+time,end="")
  5.     sleep(1)
复制代码
  演示案例:定期间码,到了放工时间主动提示
  1. from time import *
  2. def time_check():
  3.     while True:
  4.         now_time = localtime()
  5.         current_hour, current_minute =  now_time.tm_hour , now_time.tm_min
  6.         if current_hour == 16 and current_minute == 27:
  7.             print("下班时间到了")
  8.             break
  9.         else:
  10.             time = strftime("%Y-%m-%d %H:%M:%S",now_time)
  11.             print("\r" + time, end="")
  12.             sleep(1)
  13. time_check()
复制代码
哈希_加密模块 

   哈希模块:提供了的哈希算法可以将恣意长度的数据转换为固定长度的数据。
  1. from hashlib import *
  2. pwd = "123456"
  3. 生成给定数据的md5值-->哈希函数参数必须是字节数据,需要使用encode转换
  4. md5(pwd.encode())
  5. 生成给定数据的 MD5 哈希值的十六进制字符串
  6. md5.hexdigest()
复制代码
对称加密模块 

   hmac模块:一种基于哈希函数和密钥的消息认证码。通过使用HMAC算法,可以确保消息的完备性和身份验证。
  1. new()函数的语法如下: hmac.new(key, data=None, digestmod=None)
  2. from hmac import *
  3. md5 = new(b"1",b"1","md5")
  4. md5.update(b"234")
  5. print(md5.hexdigest())
复制代码

总结


回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表