python模块

8.1 模块的概念

8.1.1 模块的概念介绍

一个包含python代码的文件就是一个模块。 使用模块的作用:
1.现在程序开发文件比较大,都放在一个文件中维护不方便,拆分成多个文件方 便维护与管理
2.模块可以增加代码的重用率

8.1.2 创建模块

模块本身就是一个文件,所有py代码都可以在文件中直接书写。不过我们开发 共用模块时,最好在模块中书写以下内容。
变量 模块中的属性值
函数 单独的功能
类 相似功能组合
模块测试代码 临时使用,被导入时不会执行
注意:
(1) .模块名称遵循标识符。
(2) .模块只有第一次被导入的时候执行,多次导入不会执行

8.2 模块导入的原理

8.2.1 原理介绍

  1. 模块导入会将要导入的文件执行一遍
  2. 导入模块的名称就是我们定义的脚本或包的名称
  3. 我们导入模块的过程总结就是:在指定的范围内搜索指定名称的python脚本 或者包,将其运行, 获取其中的方法

8.3 模块的导入方式

1**、import** 模块名
2**、import** 模块名 as 别名
3**、import** 模块名1**,模块名2,…** 一行导入多个模块。
4**、from … import …**
5**、from … import … as** 别名
6**、from … import** 功能1**,功能2,…**
7**、from … import *** 导入所有
8.3.1 import 模块名

8.3.1 import 模块名
在这里插入图片描述

8.3.2 import 模块 as 别名

import pymysql as mysql

8.3.3 一行导入多个模块

import os,sys

8.3.4 from … import …局部导入方式
当使用模块中的部分功能的时候,就可以使用局部导入方式。 from 模块 import 某个函数或者类。 作用:直接导入模块中的某个函数或者某个类或变量
在这里插入图片描述
注意:如果当前文件中的变量或者函数名称和模块中的名称重复,会使用就近原 则。
在这里插入图片描述
8.3.7 from 模块 import *

from my_module import * 把my_module中所有的不是以下划线(_)开头的名字都 导入到当前位置,大部分情况下我们的python程序不应该使用这种导入方式,因 为*你不知道你导入什么名字,很有可能会覆盖掉你之前已经定义的名字。而且 可读性极其的差。
作用:直接导入模块中的所有方法和类和变量
注意:如果my_module.py中的名字前加,即money,则from my_module import *,则_money不能被导入

在这里插入图片描述
(1) . all 属性
all = [变量1,变量2 …] 设置导入模块的功能。 all=[‘money’,‘read1’]
#这样在另外一个文件中用from my_module import *就这能导入列表中规定的两 个名字
在这里插入图片描述

8.4 模块搜索路径

当你导入一个模块,Python解析器对模块位置的搜索顺序是:
1、当前目录
2、如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目 录。
由sys模块的sys.path方法来规定 因为sys.path返回的数据类型是列表
1、列表可以修改、我们导入的范围也可以通过修改sys.path这个列表获得暂时 的修改。例如通过 sys.path.append()添加目录,导入额外目录的模块。
2、列表是有序的,当搜索的过程当中,在第一个路径下搜索到了,就停止搜 索。而且sys.path第一个路径是脚本的当前路径,所以禁止大家讲自己的脚本命 名成模块的名称。 因此需要注意的是:自己模块命名的时候不能和系统的模块名称相同。
在这里插入图片描述

8.5 .pyc临时文件

为了提高加载模块的速度,python解释器会在pycache目录中下缓存每个模块编 译后的版本之后,再次被导入时,实际上导入的是这个.pyc的临时文件
在这里插入图片描述
8.4 把模块当做脚本运行
我们可以通过模块的全局变量name来查看模块名: 当做脚本运行:
name 的值 等于’main’
当做模块导入:
name的值等于模块名
作用:用来控制.py文件在不同的应用场景下执行不同的逻辑
if name == ‘main’: pass

8.5包
在我们的项目中,可能会有太多的模块 但是我们不能把所有的模块这样放在这里,这样项目会乱七八糟。 我们可以将所有相同类型的模块放在一个文件夹中,这个文件夹就叫做包 包就是文件夹,他用于存放文件也就是模块。包中也可以存放包 包就是一个包含了init.py文件的文件夹。 包只是模块的一种形式而已,包即模块。
包的结构
在这里插入图片描述
8.5.1包的导入

  1. 关于包相关的导入语句也分为import和from … import …两种,但是无论哪 种,无论在什么位置,在导入时都必须遵循一个原则:凡是在导入时带点的,点 的左边都必须是一个包,否则非法。可以带有一连串的点,如 demo01.demo02.demo03,但都必须遵循这个原则。

  2. 对于导入后,在使用时就没有这种限制了,点的左边可以是包,模块,函数, 类(它们都可以用点的方式调用自己的属性)。

  3. 对比import demo和from demo import name的应用场景: 如果我们想直接使用name那必须使用后者。

8.5.2 import导入 import python1224.one.otest01 python1224.one.otest01.one_test01()

8.5.3 from … import … 导入

  1. from 包名.模块名… import 变量名 使用方式: 例如 变量名() 或者print(变量名)
  2. from 包名.模块名… import 变量名1,变量名2,… 使用方式: 例如 变量名1() 或者print(变量名2)
  3. from 包名 import 模块名 使用方式:模块名.变量名() 或者 print(模块名.变量名)
  4. from 包名 import 模块名,模块名1… 使用方式:模块名.变量名() 或者 print(模块名1.变量名)
    在这里插入图片描述
    需要注意的是from后import导入的模块,必须是明确的一个不能带点,否则会 有语法错误,如:from a import b.c是错误语法
    在这里插入图片描述
    8.5.4 init.py文件
    在这里插入图片描述

8.6、random模块

一、随机小数 1.random() ­ 产生大于0且小于1之间的小数
在这里插入图片描述
2.uniform(a,b) ­ 产生指定范围内的随机小数
在这里插入图片描述

随机整数

1.randint(a,b) ­产生a,b范围内的整数,包含开头和结尾
在这里插入图片描述
2.randrange(start,stop,[step]) ­ 产生start,stop范围内的整数,包含开头不包含结尾。
­ step 指定产生随机数的步长。
在这里插入图片描述
三、随机选择一个数据
1.random.choice(lst) ­ 随机返回序列中的一个数据
在这里插入图片描述
四、打乱 1.shuffle() ­ 打乱列表顺序
在这里插入图片描述

8.7 sys模块
1.sys.version返回解释器的版本号
5. sys.path 返回模块的搜索路径
6. sys.argv 接受命令行下的参数
在这里插入图片描述
8.8 time模块
在Python中,通常有这三种方式来表示时间: 时间戳、时间元组(struct_time)、格式化的时间字符串。 (1) 时间戳(timestamp) : 时间戳表示的是从1970年1月1日00:00:00开始到现在的秒值。返回的是float类 型。
(2)格式化的时间字符串(Format String): ‘1999­12­06’ (3)时间元组(struct_time) : struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一周的第 几日,一年中第几天,夏令时。
在这里插入图片描述
在这里插入图片描述
格式化的时间字符串(Format String)表示方式: ‘1999­1­06’
%y 两位数的年份表示(00­99)
%Y 四位数的年份表示(000­9999)
%m 月份(01­12)
%d 月内中的一天(0­31)
%H 24小时制小时数(0­23)
%I 12小时制小时数(01­12)
%M 分钟数(00=59)
%S 秒(00­59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001­366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00­53)星期天为星期的开始
%w 星期(0­6),星期天为星期的开始
%W 一年中的星期数(00­53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
在这里插入图片描述
1、time.sleep() 睡眠功能,让程序等待多少s后再执行。
在这里插入图片描述
2、时间戳
ime.time() 时间戳表示的是从1970年1月1日00:00:00开始到现在的秒值。返回的是float类 型。
在这里插入图片描述
3、时间元组 time.localtime()
在这里插入图片描述
4、时间字符串格式化
time.strftime(’%Y­%m­%d %H:%M:%S’)
在这里插入图片描述
5、时间戳和时间元组之间的转换
(1) .时间戳转换为时间元组
time.gmtime() 和 time.localtime() time.gmtime() 返回的是UTC时间与北京时间少8小时。

UTC 协调世界时,又称世界统一时间,世界标准时间,国际协调时间,简称 UTC
在这里插入图片描述
Time.localtime() 当地时间
在这里插入图片描述
(2) .时间元组转换为时间戳
Time.mktime()
在这里插入图片描述
6、时间元组和格式化字符串之间的转换
(1) .时间元组转换为字符串 time.strftime(“格式定义”,“结构化时间”) 结构化时间参数若不传,则显示当前时 间
在这里插入图片描述
(2) .字符串转换为时间元组 time.strptime(时间字符串,字符串对应格式)
在这里插入图片描述
7、时间元组 ­­> %a %b %d %H:%M:%S %Y时间串
time.asctime(结构化时间) 如果不传参数,直接返回当前时间的格式化串
在这里插入图片描述
8、时间戳 ­­> %a %b %d %H:%M:%S %Y时间串 time.ctime(时间戳) 如果不传参数,直接返回当前时间的格式化串
在这里插入图片描述

爱,就是你和某个人一起经历的一切。
原文地址:https://www.cnblogs.com/afly-8/p/13561151.html