导入模块

  • 通过import导入模块
import time         #导入模块time
time.sleep(50) #睡眠50s
  • 导入模块并重命名
import time as t   #导入模块time重命名为t
t.sleep(50) #睡眠50s
  • 导入模块中部分内容
from time import sleep,time  #只导入sleep和time函数
sleep(50) #睡眠50s
  • 导入模块所有内容
from time import *     #导入所有函数
time.sleep(50) #睡眠50s

自定义模块

  1. 创建模块myModule

  1. 编辑模块myModule
def show():
print("我是自定义模块myModule")
  1. 导入模块myModule
import myModule
myModule.show() #输出:我是自定义模块myModule

  • 包中含有多个模块,我们使用来管理多个自定义模块
  • 包中需要有一个空文件__init__.py,Python就会将这个目录解析为包。
  1. 创建包和模块

  1. 编辑模块myModule
def show():
print("我是自定义模块myModule")
  1. 导入模块myModule
from myPackage import myModule      #从myPackage包中导入模块myModule

__name__属性

模块实际上就是一个普通的python文件,只不过从其他文件开始运行而已

模块myModule:

def show():
print("我是自定义模块myModule")
print(123)

主程序:

import myModule     #输出:123

解释:

  • 因为导入了模块myModule,所以会运行此模块,所以会输出123

如果不想运行模块中的部分代码,可以使用__name__属性

模块myModule.py:

def show():
print("我是自定义模块myModule")
if __name__ == '__main__':
print("我是主程序")

主程序main.py:

import myModule

结果:

  • 运行main.py时 =======> 无任何输出
  • 运行myModule.py时 ===> 输出:我是主程序

time模块

导入模块:

time.sleep(50)        #睡眠50s

常用函数:

t = time.time()       #返回当前的时间戳(自1970年1月1日8:00到现在的秒数)
t = time.ctime() #返回系统定义好的时间格式
t = time.gmtime() #返回时间对象(UTC时间),tm_wday的0表示周一
t = time.localtime() #返回时间对象(当地时间),tm_wday的0表示周一
t = time.mktime(<struct_time>) #通过时间对象返回时间戳
s = time.strftime(“%Y-%m-%d %H:%M:%S”,<struct_time>) #根据时间对象返回自定义格式(str类型)
t = time.strptime(“2018-10-08 21:55:01”,“%Y-%m-%d %H:%M:%S”) #根据自定义格式转化为时间对象
#参数2用于解析时间的格式
时间类
  • 时间对象是类time.struct_time创建的对象
import time
t = time.localtime() #返回时间对象(当地时间)

时间对象t的数据成员:

tm_year=2020	#年
tm_mon=6 #月
tm_mday=5 #日
tm_hour=11 #时
tm_min=0 #分
tm_sec=0 #秒
tm_wday=4 #星期
tm_yday=157 #一年中第几天
自定义时间格式
import time
t = time.localtime() #返回时间对象(当地时间)
s = time.strftime("%Y-%m-%d %H:%M:%S",t)
print(s) #输出:2020-06-05 11:07:56

解释:

  • strftime函数将时间对象转化为自定义格式的时间(str格式)
  • %Y等为占位符

常用占位符:

%Y	#年(4位数)
%y #年(2位数)
%m #月
%d #日
%H #时
%M #分
%S #秒

datetime模块

datetime也是一个比较常用的时间模块,与time模块类似

import datetime
print(datetime.datetime.now()) #返回系统定义的格式化时间

getpass模块

此模块用于登录,如输入密码时可以将密码隐藏。

import getpass
passwd=getpass.getpass("请输入密码:") #在终端上运行才可以隐藏输入密码
print(passwd)

注意: 需要打开终端运行此代码!才会又正确的现象。


math模块

导入模块:

import math

常用函数:

math.sqrt(4)    #求平方根
math.log(1,2) #求以 2 为底的 1 的对数
math.log10(1) #求以 10 为底 1 的对数
math.sin(10)
math.cos(10)
math.tan(10)
math.pi #3.141592653589793
math.e #自然对数的底

cmath模块

导入cmath模块:

import cmath
  • cmath与math类似,但cmath的计算结果为复数。
  • 若希望得到的结果不是复数,可用abs()求模。

示例:

import cmath
num = cmath.sqrt(4) #求平方根
print( num ) #输出:(2+0j)
print( abs(num) ) #输出:2.0

random模块

导入random模块:

import random

常用函数:

random.random()           #返回(0到1)的随机小数
random.randint(1,6) #返回[0,6]的随机整数
random.randrange(1,6) #返回[0,6)的随机整数
random.choice("hello") #返回随机一个字母,参数可以是一个列表
random.sample("hello",2) #随机返回两个元素,参数可以是一个列表

hashlib模块

通过hashlib可以通过不同的算法产生字符串的散列值

导入hashlib模块:

import hashlib

示例:

import hashlib
m=hashlib.md5() #使用md5进行加密,加密算法可以换(如sha256等)
m.update('hello'.encode('utf8')) #产生字符串'hello'的散列值
print(m.hexdigest()) #输出散列值
m.update('88888'.encode('utf-8')) #此时的散列值与之前的有关("hello88888")

解释:

  • 上例用的是md5算法,可根据情况选择合适的算法。

sys模块

这个模块与Python解释器相关

导入sys模块:

import sys

常用函数:

sys.argv       #返回参数列表,第一个元素为脚本文件名
sys.exit(0) #退出程序,0为正常退出
sys.version #返回解释器的版本信息
sys.maxint #返回最大整数值(Python2)
sys.maxsize #返回最大整数值(Python3)
sys.platform #返回操作系统平台名称,win为win32,linux返回linux

os模块

这个模块与操作系统交互

导入os模块:

import os
执行命令-system函数:
import os
os.system("ls -l") #运行命令,最后返回0则执行成功
执行命令-popen函数:
import os
ret=os.popen("dir") #返回一个管道对象
print(ret.read()) #得到命令的输出结果
ret.close() #使用完关闭
常用函数
import os
os.getcwd() # 返回当前工作目录
os.chdir("E:\MyFiles") # 转移工作目录
os.curdir # 返回.
os.pardir # 返回..
os.mkdir("Myfiles") # 创建一个文件夹
os.makedirs('abc\\def') # 连续创建多层目录
os.remove("1.txt") # 删除一个文件
os.rmdir("Myfiles") # 删除一个文件夹
os.removedirs('1\\2\\3') # 连续删除多层空目录(非空则不删)
os.listdir("Myfiles") # 返回一个列表,包含目录中所有文件个子目录
os.rename(src, dst) # 将src重命名为dst
os.stat("相册.zip") # 返回一个包含文件信息的元组
os.sep # 返回路径分隔符,win为\,linux为/
os.linesep # 返回行分隔符,win为\r\n,linux为\n
os.pathsep # 返回路径分隔符,win为;,linux为:
os.name # 返回当前平台,win为nt,linux为posix
os.environ # 返回一个包含系统环境变量的字典 os.path.abspath(path) #返回绝对路径
os.path.split(path) #将路径拆成目录和文件名的二元组返回
os.path.dirname(path) #返回path的目录,机械化地返回(若path为相对路径,则返回"")
os.path.basename(path) #返回路径最后的文件夹名或文件名(机械化地返回)
os.path.exists(path) #判断path是否存在
os.path.isabs(path) #判断path是否为绝对路径
os.path.isfile(path) #判断path是否为一个存在的文件
os.path.isdir(path) #判断path是否为一个存在的文件夹
os.path.getatime(path) #返回path最后存取时间
os.path.getmtime(path) #返回path最后修改时间

re模块-正则表达式

re模块利用正则表达式来匹配字符串

正则表达式
.		#匹配除换行外任一字符
+ #匹配1到多个字符
* #匹配0到多个字符
? #匹配0或1个字符
^ #只在开头匹配("^hello")
$ #只在结尾匹配("hello$")
| #或(比如com|cn匹配com或者cn) {}
{5} #匹配5次
{1,3} #匹配1到3次 []
[c,d] #匹配c或d
[a-zA-Z] #匹配所有字母
[^0-9] #匹配所有非数字 ()
((as)+) #分组 \d #匹配所有数字
\D #匹配所有非数字
\s #匹配所有空白字符
\S #匹配所有非空白字符
\w #匹配所有数字和字母
\W #匹配所有非数字和字母字符
\\\\ #匹配\

注意:

  • 匹配反斜杠本身时,需要经过两次转义。
  • \\\\向解释器转义得\\,再向re转义得到\
  • 在字符串前加r则取消转义。

示例:

文本:hello world		想匹配出world		可以用正则表达式:w..l
文本:abcaaa 想匹配出a和aaa 可以用正则表达式:a+
文本:r"a\b" 想匹配出'a\b' 可以用正则表达式:"a\\\\b"
文本:aabc1111abc222aaabc 想匹配出'abc'、'aabc' ... 可以用正则表达式:a+bc
使用re模块

导入re模块:

import re

findall():

ret=re.findall("w..l","hello world")    #返回一个列表(包含所有匹配项)

search():

ret=re.search("hello","hello,world")    #搜索第一个满足项,返回一个对象
ret.group() #返回匹配项

split():

ret = re.split("a","1a2a3a")          #用符号'a'分割字符串(返回一个列表)
ret = re.split("[2,a]","1a2a3a") #先用符号'2'分割,再用符号'a'分割

match():

ret=re.match("hello","hello,world")    #只在开头搜索,并且搜索第一个满足项,返回一个对象
ret.group() #返回匹配项

sub():

ret=re.sub("4+","5","4444abc44abc")    #把4+换成5(结果为'5abc5abc')
给匹配项命名:
ret=re.search("(?P<year>\d{4})-(?P<month>\d{2})","sf1998-12-16") #给匹配项命名
print(ret.group()) #输出全部匹配项(1998-12)
print(ret.group('year')) #输出year(1998)

解释:

  • ?P表示对此匹配项命名
  • 每一个匹配项用小括号( )包裹
  • 其中,(?P\d{4})表示正则为\d{4},名字为year

compile():

ret1=re.compile("4+")
ret2=ret1.findall("hello44,abc444")
print(ret2) #得到 ['44', '444']

解释:

  • 先定义好正则表达式,再进行匹配。
  • 此正则表达式可以多次使用。

最后

本文所总结的模块都是常用的,还存在许许多多其他的函数供我们调用,具体可以查看文档。
模块是Python强大的部分之一,需要好好学习。

09-Python模块的更多相关文章

  1. python 学习第五天,python模块

    一,Python的模块导入 1,在写python的模块导入之前,先来讲一些Python中的概念性的问题 (1)模块:用来从逻辑上组织Python代码(变量,函数,类,逻辑:实现一个功能),本质是.py ...

  2. Python模块的介绍

    Python模块的学习: 1.os模块: 下面只对os模块中几个比较常用的方法做一些简单的示例: os.system():这个方法在shell中体现的比较多,在dos命令行中也可以执行,下面就以在do ...

  3. python模块介绍- multi-mechanize 性能测试工具

    python模块介绍- multi-mechanize 性能测试工具 2013-09-13 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq 3739 ...

  4. python模块部分----模块、包、常用模块

    0.来源:https://www.cnblogs.com/jin-xin/articles/9987155.html 1.导入模块 1.1模块就是一个python文件,模块名是文件名 1.2导入模块的 ...

  5. python 模块和包

    一,模块 1,什么是模块? 常见的场景: 一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py 的后缀. 但其实 import 加载的模块分为四个通用类别: 1,使用pyt ...

  6. Python 模块 re (Regular Expression)

    使用 Python 模块 re 实现解析小工具   概要 在开发过程中发现,Python 模块 re(Regular Expression)是一个很有价值并且非常强大的文本解析工具,因而想要分享一下此 ...

  7. Python 模块之Logging——常用handlers的使用

    一.StreamHandler 流handler——包含在logging模块中的三个handler之一. 能够将日志信息输出到sys.stdout, sys.stderr 或者类文件对象(更确切点,就 ...

  8. python安装环境配置、python模块添加、sublime text编辑器配置

    前提: 本文讲述的是  windows环境 python相应的安装配置. 进入官网找安装包,官网地址如下:https://www.python.org/downloads/ 找到相应2.7.x或3.x ...

  9. Python - 模块(二)

    目录 Python - 模块(二) re re下面的方法 logging os Python - 模块(二) re re模块提供了正则表达式的相关操作 主要字符介绍: . 通配符,除了换行符之外的任意 ...

  10. python模块(转自Yuan先生)

    模块&包(****)                                                                模块(modue)的概念: 在计算机程序的开 ...

随机推荐

  1. docker镜像仓库搭建-Harbor

    一.Harbor简介 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器. 作为一个企业级私有 Registry 服务器,Harbor 提供了更好的性能和安全.提升用户使用 ...

  2. 国产 Web 组态软件 TopStack V5.0 发布

    简介 TopStack 是一款轻量型 Web 组态软件,提供设备数据采集.定时任务.控制策略.联动控制.设备告警.设备维护管理.设备绩效管理.能源管理.组态开发.报表开发等核心功能.支持移动端访问,支 ...

  3. 检索增强生成RAG-书生浦语大模型实战营学习笔记3&大语言模型8

    大语言模型学习-8.检索增强生成RAG 书生浦语大模型实战营学习笔记3 本文主要涉及检索增强生成相关基础知识,也包括第二期实战营的第3课的内容 动机 当今大语言模型存在幻觉现象,即大模型会无意义或不忠 ...

  4. 详解Python 中可视化数据分析工作流程

    本文分享自华为云社区<Python 可视化数据分析从数据获取到洞见发现的全面指南>,作者:柠檬味拥抱. 在数据科学和分析的领域中,可视化是一种强大的工具,能够帮助我们理解数据.发现模式,并 ...

  5. threejs

  6. PPO-KL散度近端策略优化玩cartpole游戏

    其实KL散度在这个游戏里的作用不大,游戏的action比较简单,不像LM里的action是一个很大的向量,可以直接用surr1,最大化surr1,实验测试确实是这样,而且KL的系数不能给太大,否则惩罚 ...

  7. kubernetes 之二进制方式部署

    我的资料链接:https://pan.baidu.com/s/18g0sar1N-FMhzY-FCMqOog 两种集群架构图 多master需要在集群上面加个lb,所有的node都需要连接lb,lb帮 ...

  8. vue3 如何在 jsx中使用 component 组件

    component 组件不像其它的内置组件(tansition.transitionGroup),可以直接从 vue 中直接导出,所有要在 jsx 使用component就要使用 h 函数 使用 vu ...

  9. Spring Boot中的 6 种API请求参数读取方式

    使用Spring Boot开发API的时候,读取请求参数是服务端编码中最基本的一项操作,Spring Boot中也提供了多种机制来满足不同的API设计要求. 接下来,就通过本文,为大家总结6种常用的请 ...

  10. 我们小公司,哪像华为一样,用得上IPD(集成产品开发)?

    在一些咨询或活动现场,我们经常听到有朋友说:我们是小公司,IPD(集成产品开发)太厚重了,不适合我们.但--到底哪里不合适? 提及IPD,成功的案例多以大公司为主:20世纪90年代,IBM在激烈的市场 ...