模块是一个包含Python代码的文件,通常以.py
为扩展名。模块中内容有函数、类、变量/常量、测试代码。模块的作用:划分代码结构、提高代码的复用率。
使用小写字母:
模块名应全部使用小写字母。
避免使用大写字母,因为不同操作系统对文件名的大小写敏感度不同。
使用下划线分隔单词:
如果模块名由多个单词组成,使用下划线 _
分隔单词。
这种风格称为 file_util
避免使用关键字和内置模块名
不要使用 Python 的关键字(如 class
、def
、import
等)或内置模块名(如 os
、sys
、math
等)作为模块名。
使用有意义的名称
模块名应简洁且有意义,能够清晰地表达模块的功能。
避免使用过于简单或模糊的名称。
避免使用特殊字符
模块名中只能包含字母、数字和下划线 _
。
不能包含空格、连字符 -
、点 .
或其他特殊字符。
导入方式 | 语法示例 | 适用场景 |
---|---|---|
导入整个模块 | import module_name |
需要访问模块中的多个函数或变量时 |
导入模块并起别名 | import module_name as alias |
模块名较长时 |
导入模块中的特定内容 | from module_name import function_name |
只需要模块中的部分内容时 |
导入模块中的所有内容 | from module_name import * |
不推荐使用 |
导入包中的模块 | import package_name.module_name |
导入包中的特定模块 |
从包中导入模块 | from package_name import module_name |
导入包中的特定模块 |
从包中的模块导入特定内容 | from package_name.module_name import function_name |
导入包中模块的特定内容 |
相对导入 | from . import module_name |
在包内部导入其他模块时 |
动态导入 | importlib.import_module('module_name') |
运行时动态导入模块 |
即自己创建的.py
文件,然后在其他脚本中导入即可。
# 建立一个 mymodel.py 内容如下
class MyClass:
pass
def firstModel(string):
print(string)
# 建立一个 importmymodel.py 内容如下
import mymodel
myclass = mymodel.MyClass
myclass.firstModel('我来了')
除了标准库,Python还有大量的第三方模块,可以通过pip
安装。
# 在终端中执行 直接写对应的第三方类库名称即可安装
pip install tensorflow
内置模块也叫标准库模块,包含了许多有用的模块。例如:
os
:与操作系统交互
sys
:访问与Python解释器相关的变量和函数
datetime
:处理日期和时间
random
:生成随机数
# 引入随机数
import random as ran
print('打印随机数:',ran.random())
# 系统操作变量
import os
print('打印添加自定义搜索路径:',os.path)
# 引入系统变量 as 是取别名
import sys as system
#添加自定义搜索路径
system.path.append('D:\\workspace\\pycharmworkspace\\pythonProject\\day6\\')
# 这里也可以查看到day6 也被加入了搜索的行列
print('打印查看搜索路径:',system.path)
# 引入时间
from datetime import datetime
print('打印当前时间:%s'%(datetime.now()))
# 引入时间
import math
# 转为30°
radians = math.radians(30)
print(f'打印sin30度:{math.sin(radians)}') # :0.49999999999999994
# round四舍五入 保留一位小数round(浮点数,1)
print('打印sin30度四舍五入后的结果:{}'.format(round(math.sin(radians),1))) # :0.5
函数名 | 功能描述 | 参数说明 | 返回值 |
---|---|---|---|
random() |
生成一个 [0.0, 1.0) 之间的随机浮点数。 |
无参数。 | 返回一个 [0.0, 1.0) 之间的随机浮点数。 |
randint(a, b) |
生成一个 [a, b] 之间的随机整数(包括 a 和 b )。 |
- a :起始整数。- b :结束整数。 |
返回一个 [a, b] 之间的随机整数。 |
randrange(start, stop, step) |
生成一个 [start, stop) 之间、步长为 step 的随机整数。 |
- start :起始整数(可选,默认为 0)。- stop :结束整数(必需)。- step :步长(可选,默认为 1)。 |
返回一个 [start, stop) 之间、步长为 step 的随机整数。 |
uniform(a, b) |
生成一个 [a, b] 之间的随机浮点数。 |
- a :起始浮点数。- b :结束浮点数。 |
返回一个 [a, b] 之间的随机浮点数。 |
choice(seq) |
从非空序列 seq 中随机选择一个元素。 |
- seq :非空序列(如列表、元组、字符串等)。 |
返回序列中的一个随机元素。 |
sample(population, k) |
从 population 中随机选择 k 个不重复的元素。 |
- population :序列或集合。- k :选择的元素数量。 |
返回一个包含 k 个元素的列表。 |
shuffle(x) |
将序列 x 中的元素随机打乱(原地修改)。 |
- x :可变序列(如列表)。 |
无返回值(原地修改序列)。 |
import random
# random()函数 生成一个[0.0, 1.0)之间的随机浮点数。
print(random.random())
# randint(a,b)函数 生成一个[a, b]之间的随机整数(包括a和b)左闭右闭 闭区间。
print(random.randint(1,10))
# randrange(start, stop, step)生成一个[start, stop)之间、步长为step的随机整数。公差为10的随机数 10-20-30。。。100
print(random.randrange(0,101,10))
# uniform(a, b)生成一个[a, b]之间的随机浮点数。
print(random.uniform(0.1,0.5))
# choice(seq) 从非空序列seq中随机选择一个元素。
print(random.choice([1,2,3,4,5,6,7,8,9]))
# sample(population, k) 从population中随机选择k个不重复的元素。 -population:序列或集合。-k:选择的元素数量。
print(random.sample([1,2,3,4,5,6,7,8,9],2)) # [9, 7]
# shuffle(x) 将序列x中的元素随机打乱(原地修改)。 -x:可变序列(如列表)。
list = [1,2,3,4,5,6,7,8,9]
random.shuffle(list)
print(list) # [7, 8, 3, 5, 9, 6, 4, 1, 2]
函数名 | 功能描述 | 返回值类型/格式 |
---|---|---|
time() |
返回当前时间的时间戳(从 1970-01-01 00:00:00 UTC 开始的秒数)。 | 浮点数(时间戳) |
ctime() |
将时间戳转换为可读的字符串格式(默认当前时间)。 | 字符串(如 "Mon Oct 2 14:30:00 2023" ) |
localtime() |
将时间戳转换为本地时间的结构化时间对象。 | time.struct_time 对象 |
mktime() |
将结构化时间对象转换为时间戳。 | 浮点数(时间戳) |
asctime() |
将结构化时间对象转换为可读的字符串格式。 | 字符串(如 "Mon Oct 2 14:30:00 2023" ) |
sleep() |
让程序暂停指定的秒数。 | 无 |
strftime() |
将结构化时间对象格式化为指定格式的字符串。 | 字符串(自定义格式) |
strptime() |
将字符串解析为结构化时间对象。 | time.struct_time 对象 |
perf_counter() |
返回一个高精度的计时器值,用于性能测试。 | 浮点数(秒) |
日期格式化:time.strftime("%Y-%m-%d %H:%M:%S", t)
代码 | 描述 | 示例 |
---|---|---|
%Y |
四位数的年份 | 2023 |
%m |
两位数的月份 | 10 |
%d |
两位数的日期 | 02 |
%H |
24 小时制的小时 | 14 |
%M |
两位数的分钟 | 30 |
%S |
两位数的秒数 | 45 |
%A |
星期几的全称 | Monday |
%a |
星期几的缩写 | Mon |
%B |
月份的全称 | October |
%b |
月份的缩写 | Oct |
%c |
本地日期和时间 | Mon Oct 2 14:30:00 2023 |
%x |
本地日期 | 10/02/23 |
%X |
本地时间 | 14:30:00 |
# 导入time模块
import time
# time() 返回当前时间的时间戳(从 1970-01-01 00:00:00 UTC 开始的秒数)。 浮点数(时间戳)
print(time.time())
# ctime() 将时间戳转换为可读的字符串格式(默认当前时间)。 字符串(如"Mon Oct 2 14:30:00 2023")
print(time.ctime())
# localtime() 将时间戳转换为本地时间的结构化时间对象。 time.struct_time对象
print(time.localtime())
# mktime() 将结构化时间对象转换为时间戳。 浮点数(时间戳)
t = time.localtime()
print(time.mktime(t))
# asctime() 将结构化时间对象转换为可读的字符串格式。 字符串(如"Mon Oct 2 14:30:00 2023")
print(time.asctime(t))
# sleep() 让程序暂停指定的秒数。 无
time.sleep(2)
print(time.strftime("%Y-%m-%d", t))
# strptime() 将字符串解析为结构化时间对象。 time.struct_time对象
s = "2025-03-05 12:00:12"
print(time.strptime(s, "%Y-%m-%d %H:%M:%S"))
# perf_counter() 返回一个高精度的计时器值,用于性能测试。 浮点数(秒)
start = time.perf_counter()
end = time.perf_counter()
print(end - start)
常用模块后续持续补充...
包(Package) 是一种组织模块的方式,用于将相关的模块组织在一起,形成一个层次化的目录结构。包的主要目的是帮助开发者更好地组织代码,避免命名冲突,并提高代码的可维护性和可重用性(就是带有特定功能的文件夹,说白了就是文件夹)。
包的本质是一个目录,目录中包含一个或多个 Python 模块(.py
文件)。
目录中必须包含一个名为 __init__.py
的文件(可以是空文件),用于标识该目录是一个包。
从 Python 3.3 开始,__init__.py
文件不再是必需的(称为“隐式命名空间包”),但为了兼容性和明确性,通常仍会保留。
模块和包的集合,目前已经有60多万类库了,可以注册看下。