Python模块的使用

Python模块的使用

  • Python 模块 (Module),是一个 Python 文件,以.py 结尾,包含了 Python 对象定义和Python语句

一、 模块的导入

# Python为了方便开发,提供了很多内置模块


import time  # 1、使用 import魔铠名直接导入一个模块
from random import randint  # 2、 from 模块名 import 函数名  ,导入一个模块里的方法或者变量
from math import *  # 3、from 模块名 import *  导入这个模块里的"所有"方法和变量
import datetime as dt  # 4、导入一个模块并给这个模块起一个别名
from copy import deepcopy as dp  # 5、from 模块名 import 函数名 as 别名


# 导入这个模块以后,就可以使用这个模块里的方法和变量
print(time.time())
print(randint(0, 10))
print(pi)
print(dt.datetime(2021, 4, 7, 20, 30, 00))

dp(['hello', 'good', [1, 2, 3], 'bye'])

二、python内置模块

1. os模块

# 获取文件名和文件类型
# print(os.path.splitext('2020.2.21.demo.py'))  # ('2020.2.21.demo', '.py')

# os 里其他方法的介绍
# print(os.getcwd())  # 获取当前工作目录
# os.chdir(r'C:\Users\frecy\PycharmProjects\learning\py_study')  # 改变当前脚本工作目录,相当于shell下的cd命令
# print(os.getcwd())
# os.rename('测试123.txt', 'test123.txt')  # 文件重命名
# os.remove('test123.txt')  # 删除文件
# os.rmdir('demo')  # 删除文件夹
# os.removedirs('xxc')  # 删除空文件夹
# os.mkdir('demo')  # 创建一个文件夹
# print(os.listdir('C:\\'))
# os.name  # 获取操作系统名称  windows ==>nt  Linux/UniX/MacOS ==> posix
# print(os.environ)  # 获取环境变量
print(os.environ.get('PATH'))  # 获取指定的环境变量

2. sys模块

# sys 系统相关的功能
import sys

print('hello world')
# sys.exit(100)  # 退出程序,和内置函数exit 功能一致
print('哈哈哈')

print(sys.path)  # 结果是一个列表,表示查找模块的路径
# sys.stdin  # 接收用户的输入,和input 相关,可以像input一样,但是可以不断的输入,直到输入两个连续的回车键

# sys.stdout 和 sys.stderr 默认都是在控制台
# sys.stdout  # 修改 sys.stdout 可以改变默认输出位置
# sys.stderr  # 程序退出,和内置函数exit功能一致

3. math模块

# 数学计算相关的模块
import math


# 2 ** 10  / pow(2, 10)  /math.pow(2, 10)
print(math.factorial(6))  # 阶乘
print(math.pow(2, 10))  # 1024 幂运算

print(math.floor(12.98))  # 12 向下取整
print(math.ceil(15.0001))  # 16 向上取整
# round()  # 内置函数,实现四舍五入到指定位数

print(math.sin(math.pi / 6))  # 弧度  π = 180°
print(math.cos(math.pi / 3))  # 0.5
print(math.tan(math.pi / 2))  # 无穷大

4. random模块

# random 模块用来生成一个随机数
import random


print(random.randint(2, 9))  # 用来生成[a, b]的随机整数,等价于randrange(a, b+1)
# random()  用来生成[0, 1)的随机浮点数
print(random.random())

# randrange(a, b)  用来生成[a, b)的随机整数
print(random.randrange(2, 9))

# chioce 用来在可迭代对象里随机抽取一个数据
print(random.choice([1, 2, 3, 4, 6, 2, 1, 6]))

# sample 用来在可迭代对象里随机抽取 n 个数据
print(random.sample(['zhangsan', 'lisi', 'jack', 'jerry', 'henry', 'tony'], 2))

5. datetime模块

import datetime as dt

# python方法和属性
# 以一个下划线 _ 开始
# 以两个下划线 __ 开始 __x
# 以两个下划线开始,再以下划线结束 __x__

# 涉及到四个类 datetime/date/time/timedelta
print(dt.datetime.now())  # 获取当前时间
print(dt.date(2020, 1, 1))  # 创建一个日期
print(dt.time(18, 23, 45))  # 创建一个时间
print(dt.datetime.now() + dt.timedelta(3))  # 计算三天以后的日期

6. time模块

import time


print(time.time())  # 获取从 1970-01-01 00:00:00 UTC 到现在时间的秒数
print(time.strftime("%Y-%m-%d %H-%M-%S"))  # 按照指定格式输出时间
print(time.asctime((1,1,1,1,1,1,2,147,-1))) # Mon Apr 15 20:03:23 2019
print(time.ctime()) # Mon Apr 15 20:03:23 2019  传入秒数

print('hello')
time.sleep(2)  # 让时间暂停10秒钟
print('world')

7. calendar模块

import calendar  # 日历模块


# calendar.setfirstweekday(calendar.SUNDAY)  # 设置每周起始日期码,周一到周日分别对应0~6
# calendar.firstweekday()  # 返回当前每周起始日期的设置。默认情况下,首次载入calendar模块时返回0,即星期一

# c = calendar.calendar(2021)  # 生成2021年的日历,并且以周日为起始日期码
# print(c)  # 打印2021年日期

# print(calendar.isleap(2000))  # True, 闰年返回True,否则返回False
count = calendar.leapdays(1996, 2010)  # 获取1996年到2010年一共有多少个闰年
print(count)
print(calendar.month(2021, 4))  # 打印2021年4月的日历

8. hashlib和hmac模块

import hashlib
import hmac

# 这两个模块都是用来进行数据加密
# hashlib模块里主要支持两个算法 md5 和 sha 加密
# 加密方式: 单向加密(md5/sha/hmac)、对称加密、非对称加密rsa
# 单向加密:只有加密的过程,不能解密 md5/sha

# 需要将加密的内容转换成为二进制
x = hashlib.md5()  # 生成一个md5对象
x.update('abc'.encode('utf8'))
# print(x.hexdigest())  # 900150983cd24fb0d6963f7d28e17f72
# 'abc'  ==> 900150983cd24fb0d6963f7d28e17f72

# 文件的md5,文件下载前使用加密生成一个密文,下载完成后生成一个密文,两个对比检查下载文件是否正确
# h1 = hashlib.sha1('123456'.encode())
# print(h1.hexdigest())  # 7c4a8d09ca3762af61e59520943dc26494f8941b
# h2 = hashlib.sha224('123456'.encode())  # 224位  一个十六进制占4位
# print(h2.hexdigest())  # f8cdb04495ded47615258f9dc6a3f4707fd2405434fefc3cbf4ef4e6
# h3 = hashlib.sha256('123456'.encode())
# print(h3.hexdigest())  # 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
# h4 = hashlib.sha384('123456'.encode())
# print(h4.hexdigest())
# 0a989ebc4a77b56a6e2bb7b19d995d185ce44090c13e2984b7ecc6d446d4b61ea9991b76a4c2f04b1b4d244841449454

# hmac 加密可以指定秘钥
h = hmac.new('h'.encode(), '你好'.encode(), 'sha256')
result = h.hexdigest()
print(result)  # 获取加密后的结果

9. uuid模块

# uuid用来生成一个全局唯一id的模块
import uuid


# 基于MAC地址,时间戳,随机数来生成唯一的uuid,可以保证全球范围内的唯一性,比较耗时间,效率低
print(uuid.uuid1())  # 32个长度  每一个字符有16个选择 ,16**32
# print(uuid.uuid2())  # python中没有基于DCE的算法,所以python的uuid模块中没有uuid2这个方法

# uuid3 和 uuid5是使用传入的字符串根据指定的算法算出来的,是固定的
print(uuid.uuid3(uuid.NAMESPACE_DNS, 'zhangsan'))  # 生成固定的uuid,算法 md5
print(uuid.uuid5(uuid.NAMESPACE_DNS, 'zhangsan'))  # 生成固定的uuid,算法 sha1

# 通过伪随机数得到uuid,是有可能重复的
print(uuid.uuid4())  # 生成随机uuid,使用的最多,如邮箱激活链接

10.使用自定义模块

# 一个模块本质上就是一个py文件
# 自己定义一个模块,其实就是自己写一个py文件
# 如果一个py文件想要当做一个模块被导入,文件名一定要遵守命名规范
# 必须由数字、字母或下划线组成,不能数字开头
# 导入了一个模块,就能使用这个模块里的变量和函数
# import my_mod

# 使用 from <module_name> import * 导入这个模块里"所有"的变量和函数
# 本质是读取模块里的 __all__ 属性,看这个属性里定义了哪些变量和函数
# 如果模块里没有定义 __all__ 才会导入所有不以 _ 开头的变量和函数
# 以一个下划线开头的变量,建议只在本模块里使用,别的模块不要导入
from my_mod import *


# print(my_mod.m)
# my_mod.test()

print(m)
test()
# print(n)  #  报错,通过from <module_name> import * 导入模块, __all__ 里没有n,不能使用

import my_mod
print(my_mod.n)  # 通过import导入,可以使用n

print(my_mod._age)  # 报错,_age在my_mod模块中已经被删除了,不能使用

11.包的使用

# 可以将多个具有相似或者有关联的多个模块放到一个文件夹里,便于统一管理
# 这个文件夹,我们就可以称之为包
# python包里,会有一个 __init__.py
from chat import receive_message
from chat.send_message import x
# import chat
print(receive_message.y)
print(x)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值