模块与包1. 知识点1.1 核心概念概念说明类比模块一个.py文件内含函数、类、变量一本菜谱里的单独一页包一个含__init__.py的文件夹可含多个模块一本完整的菜谱书import引入整个模块把整本书搬到厨房from…import从模块引入特定内容只撕下需要的那一页name当前模块的名字直接运行时为__main__菜谱上的页码标签sys.pathPython 搜索模块的路径列表图书馆的索书号目录1.2 导入方式对比写法调用方式优点缺点import mathmath.sqrt(16)命名空间清晰不冲突每次写前缀稍长from math import sqrtsqrt(16)简洁可能覆盖同名变量from math import *sqrt(16)/pi极简污染命名空间不推荐import math as mm.sqrt(16)简短清晰需记住别名1.3 三个常用标准库速览模块核心用途常用方法math数学运算sqrt(),ceil(),floor(),sin(),pi,erandom随机数生成randint(),choice(),shuffle(),random(),sample()time时间相关time(),sleep(),ctime(),localtime(),strftime()2. 代码示例示例 1创建自己的模块并导入在D:\Desktop\python学习下新建my_utils.py你不需要手动操作我已在下方给出代码逻辑然后在主程序中导入它。# # 文件 my_utils.py用你喜欢的编辑器新建保存在同一目录# defgreet(name):返回一句问候语returnf你好{name}欢迎来到模块的世界。defadd(a,b):两数相加returnab PI3.14159#/////////////////////////////////////////////////////////#主文件main.py# 方式1导入所有文件importmy_utilsprint(my_utils.greet(小明))print(fPI {my_utils.PI})# 方式2只导入需要的部分frommy_utilsimportaddprint(f3 5 {add(3,5)})# 直接调用无需前缀# 方式3使用别名importmy_utilsasmuprint(mu.greet(小红))# 别名一样用运行说明把my_utils.py和main.py放在同一目录下运行main.py即可。Python 会先在当前目录搜索模块。示例 2__name__的妙用# # 文件 helper.py# defdouble(x):returnx*2print(fhelper.py 的 __name__ 是{__name__})if__name____main__:# 只有当 helper.py 被直接运行时才执行以下代码print(f直接运行double(5) {double(5)})运行结果当执行python helper.py→__name__为__main__会打印测试结果。当在别的文件import helper→__name__为helper测试代码不会执行。这就像菜谱本身有两部分正文函数定义 厨师试做笔记if __name__ __main__。别人借菜谱时只看正文只有你自己翻看时才看到试做笔记。示例 3sys.path查看模块搜索路径importsysprint(Python搜索模块的路径列表)fori,pathinenumerate(sys.path,1):print(f{i}.path)Python 会按顺序在这些目录里找你 import 的模块。当前目录通常第一项为空字符串表示优先级最高。示例4math、random、time实战importmathimportrandomimporttime# math模块print(f根号 2 ≈{math.sqrt(2):.4f})# sqrt开平方根常用于几何计算print(f2 的 10 次方 {math.pow(2,10)})# pow幂运算返回浮点数print(f向上取整 3.14 →{math.ceil(3.14)})# ceil天花板往大取整print(f向下取整 3.99 →{math.floor(3.99)})# floor地板往小取整print(fπ {math.pi})# pi圆周率常量#random 模块fruits[苹果,香蕉,橘子,葡萄,西瓜]print(f随机选择一个水果{random.choice(fruits)})# choice从序列中随机选一个print(f随机整数1-100{random.randint(1,100)})# randint含两端的随机整数print(f随机小数0-1:{random.random():.4f})# random()返回 [0,1) 浮点数random.shuffle(fruits)# shuffle原地打乱列表print(f打乱后的水果{fruits})print(f抽 3 个不重复水果{random.sample(fruits,3)})# sample不放回抽样#time 模块print(f当前时间戳秒{time.time():.0f})# time()从 1970-01-01 至今的秒数print(f可读时间{time.ctime()})# ctime()把时间戳转成人类可读格式#计时测量一段代码跑了多久starttime.time()#模拟操作totalsum(range(1_000_000))endtime.time()print(f耗时{end-start:.6f})
Python基础学习-08
模块与包1. 知识点1.1 核心概念概念说明类比模块一个.py文件内含函数、类、变量一本菜谱里的单独一页包一个含__init__.py的文件夹可含多个模块一本完整的菜谱书import引入整个模块把整本书搬到厨房from…import从模块引入特定内容只撕下需要的那一页name当前模块的名字直接运行时为__main__菜谱上的页码标签sys.pathPython 搜索模块的路径列表图书馆的索书号目录1.2 导入方式对比写法调用方式优点缺点import mathmath.sqrt(16)命名空间清晰不冲突每次写前缀稍长from math import sqrtsqrt(16)简洁可能覆盖同名变量from math import *sqrt(16)/pi极简污染命名空间不推荐import math as mm.sqrt(16)简短清晰需记住别名1.3 三个常用标准库速览模块核心用途常用方法math数学运算sqrt(),ceil(),floor(),sin(),pi,erandom随机数生成randint(),choice(),shuffle(),random(),sample()time时间相关time(),sleep(),ctime(),localtime(),strftime()2. 代码示例示例 1创建自己的模块并导入在D:\Desktop\python学习下新建my_utils.py你不需要手动操作我已在下方给出代码逻辑然后在主程序中导入它。# # 文件 my_utils.py用你喜欢的编辑器新建保存在同一目录# defgreet(name):返回一句问候语returnf你好{name}欢迎来到模块的世界。defadd(a,b):两数相加returnab PI3.14159#/////////////////////////////////////////////////////////#主文件main.py# 方式1导入所有文件importmy_utilsprint(my_utils.greet(小明))print(fPI {my_utils.PI})# 方式2只导入需要的部分frommy_utilsimportaddprint(f3 5 {add(3,5)})# 直接调用无需前缀# 方式3使用别名importmy_utilsasmuprint(mu.greet(小红))# 别名一样用运行说明把my_utils.py和main.py放在同一目录下运行main.py即可。Python 会先在当前目录搜索模块。示例 2__name__的妙用# # 文件 helper.py# defdouble(x):returnx*2print(fhelper.py 的 __name__ 是{__name__})if__name____main__:# 只有当 helper.py 被直接运行时才执行以下代码print(f直接运行double(5) {double(5)})运行结果当执行python helper.py→__name__为__main__会打印测试结果。当在别的文件import helper→__name__为helper测试代码不会执行。这就像菜谱本身有两部分正文函数定义 厨师试做笔记if __name__ __main__。别人借菜谱时只看正文只有你自己翻看时才看到试做笔记。示例 3sys.path查看模块搜索路径importsysprint(Python搜索模块的路径列表)fori,pathinenumerate(sys.path,1):print(f{i}.path)Python 会按顺序在这些目录里找你 import 的模块。当前目录通常第一项为空字符串表示优先级最高。示例4math、random、time实战importmathimportrandomimporttime# math模块print(f根号 2 ≈{math.sqrt(2):.4f})# sqrt开平方根常用于几何计算print(f2 的 10 次方 {math.pow(2,10)})# pow幂运算返回浮点数print(f向上取整 3.14 →{math.ceil(3.14)})# ceil天花板往大取整print(f向下取整 3.99 →{math.floor(3.99)})# floor地板往小取整print(fπ {math.pi})# pi圆周率常量#random 模块fruits[苹果,香蕉,橘子,葡萄,西瓜]print(f随机选择一个水果{random.choice(fruits)})# choice从序列中随机选一个print(f随机整数1-100{random.randint(1,100)})# randint含两端的随机整数print(f随机小数0-1:{random.random():.4f})# random()返回 [0,1) 浮点数random.shuffle(fruits)# shuffle原地打乱列表print(f打乱后的水果{fruits})print(f抽 3 个不重复水果{random.sample(fruits,3)})# sample不放回抽样#time 模块print(f当前时间戳秒{time.time():.0f})# time()从 1970-01-01 至今的秒数print(f可读时间{time.ctime()})# ctime()把时间戳转成人类可读格式#计时测量一段代码跑了多久starttime.time()#模拟操作totalsum(range(1_000_000))endtime.time()print(f耗时{end-start:.6f})