0
点赞
收藏
分享

微信扫一扫

python基础——模块和包

爱薇Ivy趣闻 2022-04-08 阅读 65
python

模块和包

  • 一个文件(.py)就是一个模块,模块名就是文件名去掉后缀py。

好处:

  1. -提高代码的可复用、可维护性。一个模块编写完毕后,可以很方便的在其他项目中导入
  2. -解决了命名冲突,不同模块中相同的命名不会冲突

导入模块的方式

请添加图片描述
模块循环导入问题

A:模块

    def test():
        f()
B: 模块

    def f():
        test()

解决方法:

  1. 重新架构
    2.将导入的语句放到函数里面
    3.把导入语句放到模块的最后

导入包的方式

    文件夹+ __init__.py 文件 =包

导入方式和模块的导入大致相同
    fromimport 模块
    from.模块 import/函数/变量
    from.模块 import *(其中的方法和模块的一样)

os模块

os全称 OperationSystem操作系统
os 模块里提供的方法就是用来调用操作系统里的方法

os.getcwd()  # 获取当前的工作目录,即当前python脚本工作的目录
os.chdir('C:\\') # 切换工作目录
os.rename('毕业论文.txt','毕业论文-最终版.txt') # 文件重命名
os.remove('毕业论文.txt') # 删除文件
os.rmdir('demo')  # 只能删除空文件夹
os.removedirs('demo') # 删除空文件夹
os.mkdir('demo')  # 创建一个文件夹
os.listdir('C:\\') # 列出指定目录里的所有文件和文件夹
os.name    # nt->widonws  posix->Linux/Unix或者MacOS
os.environ # 获取到环境配置
os.environ.get('PATH') # 获取指定的环境配置

os模块里的 path 经常会使用

# abspath ==> 获取文件的绝对路径
print(os.path.abspath('01-高阶函数.py'))

# isdir判断是否是文件夹
print(os.path.isdir('02-函数的嵌套.py'))  # False
print(os.path.isdir('xxx'))  # True

# isfile 判断是否是文件
print(os.path.isfile('03-闭包的概念.py'))  # True
print(os.path.isfile('xxx'))  # False

# exists 判断是否存在
print(os.path.exists('05-优化计算时间的代码.py'))  # True
print(os.path.exists('mmm.py'))  # False

file_name = '2020.2.21.demo.py'
# 分隔文件的扩展名,返回(路径,扩展名)形式的二元组
print(os.path.splitext(file_name))  #('2020.2.21.demo', '.py')

sys模块

import sys
sys.path # 模块的查找路径,以列表的形式储存
sys.argv # 传递给Python脚本的命令行参数列表
sys.exit() #退出当前程序,一般用于主线程的退出

sys.stdin # 标准输入。可以通过它来获取用户的输入
sys.stdout # 标准输出。可以通过修改它来改变默认输出
sys.stderr # 错误输出。可以通过修改它来改变错误删除

math模块

模块中有大量常用的数字计算函数

import math

print(math.fabs(-100)) # 取绝对值
print(math.ceil(34.01))  #向上取整,有小数就往上取
print(math.floor(34.98))  # 向下取整
print(math.factorial(5)) # 计算阶乘
print(math.pi)   # π的值,约等于 3.141592653589793
print(math.pow(2, 10)) # 2的10次方
print(math.sin(math.pi / 6))  # 正弦值
print(math.cos(math.pi / 3))  # 余弦值
print(math.tan(math.pi / 2))  # 正切值

random模块

主要用于生成随机数或者从一个列表里随机获取数据。

import random

random.random()  # 生成 [0,1)的随机浮点数,取不到1
random.uniform(a, b)  # 生成[a,b]的随机浮点数
random.randint(a, b)  # 生成[a,b]的随机整数
random.randrange(a, b)  # 生成[a,b)的随机整数,取不到b
random.choice('abcdefg')  # 从列表里随机取出一个元素
random.sample('abcdefghij', 3)  # 从列表里随机取出指定个数的元素

datetime模块

datetime模块主要用来显示日期时间,
date类,用来显示日期;
time类,用来显示时间;
datetime类,用来显示日期时间;
timedelta类,用来计算时间。

 import datetime

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

time模块

time模块不仅可以用来显示时间,还可以控制程序,让程序暂停(使用sleep函数)

import time

print(time.time())  # 获取从1970-01-01 00:00:00 UTC 到现在时间的秒数
print(time.strftime("%Y-%m-%d %H:%M:%S"))  # 将时间格式化形式显示
print(time.asctime())  # Mon Apr 15 20:03:23 2019
print(time.ctime())  # Mon Apr 15 20:03:23 2019

# time.struct_time(tm_year=2022, tm_mon=4, tm_mday=1, 
# tm_hour=15, tm_min=43, tm_sec=21, tm_wday=4, tm_yday=91, tm_isdst=0)
print(time.localtime())  # 获取本地时间

print('hello')
print(time.sleep(1))  # 让线程暂停10秒钟
print('world')

calendar模块

日历模块

import calendar

print(calendar.calendar(2022))  # 生成2022年日历
print(calendar.month(2022, 4))  # 生成2022年4月的日历
print(calendar.isleap(2022))  # False  判断是否是闰年

hashlib和hmac模块

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

第三方模块

  • 基本操作
pip install <package_name>  用来下载一个第三方的模块
pip uninstall <package_name>  用来删除第三方模块
pip list 或 pip freeze 用来列出当前环境安装的模块名和版本号

使用 install ,默认是从 pythonhosted下载,由于各种原因,在国内下载速度相对来说比较慢,在某些时候甚至会出现连接超时的情况,我们可以使用国内镜像来提高下载速度。

常见国内镜像

  • 阿里云 https://mirrors.aliyun.com/pypi/simple/
  • 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
  • 豆瓣(douban) https://pypi.douban.com/simple/
  • 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
  • 中国科学技术大学 https://pypi.mirrors.ustc.edu.cn/simple/

临时修改下载地址

如果只是想临时修改某个第三方资源包的下载地址,在第三方包名后面添加 -i 参数,再指定下载路径即可,格式为pip install <包名> -i <国内镜像路径>

pip install 包名 -i https://pypi.douban.com/simple

永久修改下载地址

在当前用户目录下创建一个pip的文件夹,然后再在文件夹里创建pip.ini文件并输入一下内容:

[global]
index-url=https://pypi.douban.com/simple
[install]
trusted-host=pypi.douban.com
  1. 在开发中,我们在将程序部署到服务器的时候, 我们要把代码和第三方资源包都给服务器。但是每个项目的第三方资源包又不一致时,
  2. 怎么办呢?-----------使用虚拟环境
  3. 使用 pip freeze > requires.txt 命令,将代码里使用到的第三方资源包以及版本号写入到
    requirements.txt 文件,在部署时,将 requirements.txt 文件上传到服务器。
  4. 服务器在拿到代码以后,首先运行 pip install -r requirements.txt
    命令,将文件里列出的所有第三方框架先安装到服务器,然后才能运行代码。
举报

相关推荐

0 条评论