Python学习第七天

模块

        模块是一个包含Python代码的文件,通常以.py为扩展名。模块中内容有函数、类、变量/常量、测试代码。模块的作用:划分代码结构、提高代码的复用率。

命名规范

使用小写字母:

  • 模块名应全部使用小写字母。

  • 避免使用大写字母,因为不同操作系统对文件名的大小写敏感度不同。

使用下划线分隔单词:

  • 如果模块名由多个单词组成,使用下划线 _ 分隔单词。

  • 这种风格称为 file_util

避免使用关键字和内置模块名

  • 不要使用 Python 的关键字(如 classdefimport 等)或内置模块名(如 ossysmath 等)作为模块名。

使用有意义的名称

  • 模块名应简洁且有意义,能够清晰地表达模块的功能。

  • 避免使用过于简单或模糊的名称。

避免使用特殊字符

  • 模块名中只能包含字母、数字和下划线 _

  • 不能包含空格、连字符 -、点 . 或其他特殊字符。

导入模块

导入方式 语法示例 适用场景
导入整个模块 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模块
函数名 功能描述 参数说明 返回值
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模块
函数名 功能描述 返回值类型/格式
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多万类库了,可以注册看下。

你可能感兴趣的:(Python学习,学习)