电子商务网站建设的方法有哪些,建设银行租房平台网站6,高端企业网站源码,一键生成房屋设计图目录 1. 使用模块2. 使用包3. 常用模块3.1 日期和时间3.2 伪随机数3.3 摘要算法3.4 JSON 处理3.5 图像处理 模块是Python用来组织代码的一种方法#xff0c;包是Python用来组织模块的一种方法。
常用基本语法如下#xff1a;
Windows 按住winR 输入 cmd#xff0c;Mac 打开… 目录 1. 使用模块2. 使用包3. 常用模块3.1 日期和时间3.2 伪随机数3.3 摘要算法3.4 JSON 处理3.5 图像处理 模块是Python用来组织代码的一种方法包是Python用来组织模块的一种方法。
常用基本语法如下
Windows 按住winR 输入 cmdMac 打开Terminal
pip install 模块名 # 安装模块
pip uninstall 模块名 # 卸载模块
pip list # 查看所安装的模块import 模块名
import 模块名 as 别名
from 模块名 import 成员 # 导入单个成员
from 包 import 模块
from 包.子包 import 模块
from 包.子包.模块 import 成员常见问题No module named XXXX
# Windows 按住winR 输入 cmdMac 打开Terminal输入以下命令
pip install XXXX如果根据上面部分还是不能解决则在要执行文件中开头添加以下命令
import sys
import os
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ..)))1. 使用模块
Python 把能够相互包含且有组织的代码段称为模块module。使用模块的好处如下
提高代码的可维护性。提高代码的可重用性。避免命名冲突和代码污染。
文件能够在物理层面组织模块一个文件被看作是一个独立模块一个模块也可以被看作一个文件。模块的文件名就是模块的名字加上扩展名.py。在.py文件中可以包含类、函数、变量、可运行的代码等。模块也可以被其他模块、脚本、交互式解析器导入import也可以被其他程序引用。
Python 模块一般位于安装目录下Lib文件夹中执行help(“moduels”)命令可以查看已经安装的所有模块列表。模块可以分为3种类型
内置标准模块Python 预安装了很多标准模块如sys、time、json模块等。第三方开源模块由第三方商业公司或个人开发并免费分享到网上的模块。用户使用的大部分模块都是这种类型。自定义模块由开发者自己开发的模块方便在脚本中使用 自定义模块的名字不能与系统模块重名否则有覆盖内置模块的风险。例如自定义一个sys.py模块后就不能够使用系统的sys模块。 使用第三方模块时有2种方法
1.使用pip命名安装。
Windows 按住winR 输入 cmdMac 打开Terminal
pip install 模块名 # 安装模块
pip uninstall 模块名 # 卸载模块
pip list # 查看所安装的模块2.通过下面网址下载模块并安装模块。下载.whl或者.gz文件在命令行进入到文件目录使用pip install 文件名或者 python [setup.py](http://setup.py) install
PyPi官网https://pypi.orgGohlkehttps://www.lfd.uci.edu/~gohlke/pythonlibs/
使用import语句可以导入模块模块名不包含.py扩展名。如果模块名比较长在导入时可以起一个别名。
# 导入模块
import 模块名1
import 模块名2
import 模块名1[,模块名2,..,模块名N]
# 导入模块并起别名
import 模块名1 as 别名 所有的模块在开头部分导入并且建议遵循如下顺序 Python 标准模块。Python 第三方模块。自定义模块。
一个模块无论被导入多少次它只被加载一次当Python解释器在源代码中遇到import关键字时自动在搜索路径sys.path中搜寻对应的模块如果发现在函数中导入那么它的作用域是局部的。 搜索路径是一个目录列表被存储在sys模块中的path变量中供解释器在导入模块时参考可以事先配置或者在源代码中设置。 import sys # 导入sys模块
for i in sys.modules: # 遍历所有导入的模块print(i,end\n)dir(sys) # 查看该模块中可用的成员# 兼容导入适配的模块版本
try:import json # python 2.6版本后
except ImportError:import simplejson as json # python 2.5版本前使用from-import语句可以将指定模块中的成员名称导入当前作用域中如函数、类或变量等语法和示例如下
from 模块名 import 成员 # 导入单个成员
from 模块名 import 成员1[,成员2,...,成员N] # 导入多个成员
from 模块名 import * # 导入所有成员from time import * # 导入time模块中所有成员
print(dir()) # 查看导入的所有成员名称2. 使用包
包是Python组织模块的一种逻辑方法是一个有层次的目录结构它定义了由多个模块或多个子包组成的Python应用程序运行环境。一个文件夹就是一个包包的名称就是文件夹的名称包可以相互嵌套。包的好处如下
为名称空间加入有层次的组织结构。允许开发人员把有联系的模块组合到一起。允许分发者使用目录结构而不是一大堆混乱的文件。解决同一个允许环境中导入模块重名问题。
创建包就是创建文件夹。 包文件夹下存在一个名为__init__.py的文件用于标识当前文件夹是一个包建议创建包时都添加__init__.py该文件。init.py可以是一个空文件也可以初始化设置代码。 导入包有两种方法
绝对路径导入通过指定“包.模块.名字”的完整路径进行导入。相对路径导入在一个包package的内部模块之间可以使用相对路径导入。 在导入路径前面添加1个点号.表示当前目录。在导入路径前面添加2个点号…表示父级目录。
import 包
import 包.子包
# 常用形式1
import 包.子包.模块
# 常用形式2
from 包 import 模块
from 包.子包 import 模块
from 包.子包.模块 import 成员使用相对路径导入必须是一个完整的项目切必须从入口程序开始执行。
3. 常用模块
3.1 日期和时间
操作日期和时间的内置模块有time、datetime、calendar。
time 是基础模块可满足对时间类型数据的基本处理
时间也是一种数据类型分3种形式时间戳timestamp、结构化时间struct_time、格式化的时间字符串format string。
import time # 导入time模块
print(time.time()) # 返回当前时间戳浮点数1700636693.016157
返回结构化时间一个元组
time.struct_time(tm_year2023, tm_mon11, tm_mday22,
tm_hour15, tm_min6, tm_sec30,
tm_wday2, tm_yday326, tm_isdst0)print(time.localtime())
print(time.ctime()) # 返回当前本地时间的字符串Wed Nov 22 15:06:30 2023
print(time.strftime(%Y-%m-%d %H:%M:%S)) # 2023-11-22 15:16:00datetime 模块是对time模块进行高级封装功能更强大使用更方便
包含6个字类型
datetime.date表示日期常用的属性有year、month、day。datetime.time表示时间常用属性有hour、minute、second、microsecod。datetime.datetime表示日期时间datetime.timedelta表示两个date、time、datetime实例之间的时间间隔。datetime.tzinfo时区对象。datetime.timezonetzinfo的子类表示时区计算UTC的偏移量。
import time
import datetime
# 获取当前时间
print(datetime.datetime.now()) # 2023-11-22 15:35:44.190278
print(datetime.datetime.today()) # 2023-11-22 15:35:44.190382
# datetime 和结构化时间之间相互转换
print(datetime.datetime(year2023,month11,day22,hour15,minute30,second00)) # 2023-11-22 15:30:00
print(datetime.datetime.now().timetuple()) # 转换为结构化时间元组
# datetime和时间戳之间相互转换
print(datetime.datetime.timestamp(datetime.datetime.now()))
print(datetime.datetime.fromtimestamp(1700638527.603307))
# datetime和时间字符串之间的相互转换
dt datetime.datetime.now()
print(dt.strftime(%Y%m-%d %H:%M:%S)) # 202311-22 15:44:19
print(dt datetime.timedelta(hours8)) # 2023-11-22 23:44:19.150674
calendar 模块用于处理日历相关
import calendar
n calendar.month(2023,11)
print(n)3.2 伪随机数
random 内置模块能够实现各种分布的伪随机数。
random.random()用于生成0n1.0的浮点数。random.unform(a,b)用于生成anb的浮点数。random.randint(a,b)用于生成anb的整数。random.randirange([start0], stop[,step1])指定范围内按指定步长递增的集合中获取一个随机数。random.choice(sequence)从参数序列sequence对象中获取一个随机元素。random.shuffle(x[,random])将一个列表中的元素打乱。random.sample(sequence,k)从指定序列sequence中随机获取指定长度的片段。
import random
print(random.random()) # 产生[0,1)浮点数 0.10565535904276113
print(random.uniform(1.1,5.4)) # 产生[1.1,5.4)浮点数 2.2114464386429304
print(random.randint(1,10)) # 产生[0,1]整数 4
print(random.choice([1,2,3,4,5,6,7,8,9,0])) # 从序列中随机选取一个元素 9
print(random.randrange(1,100,2)) # 生成 1 100的间隔2的随机整数 79
a [1,3,5,7,8]
random.shuffle(a) # 将序列a中元素顺序打乱
print(a) # [5, 8, 1, 3, 7]3.3 摘要算法
hashlib 内置模块包含hash和md5加密方法这种加密是不可逆的也称摘要算法。
hash 为哈希表示把任意的输入通过某种hash算法转换成固定长度的输出这个输出值就是散列值也称摘要值算法为哈希函数摘要函数。
MD5 是最常见的摘要算法速度快生成结果是固定的16字节通常用一个32位的十六进制字符串表示。
常用的方法有如下
md5()、sha1()加密算法获取一个加密的哈希对象。update()用参数字符串更新哈希对象。digest()以二进制数据字符串返回摘要信息。hexdigest()以十六进制数据字符串返回摘要信息。copy()复制哈希对象。
import hashlib # 导入加密模块
s Python # 待加密的字符串
md5 hashlib.md5() # md5加密
md5.update(s.encode(utf-8)) # 注意转码
r md5.hexdigest() # 返回十六进制的数据字符串值
print(r) # a7f5f35426b927411fc9231b563821733.4 JSON 处理
JSON 是一种广泛应用的轻量级的数据交换格式字典格式其中包含方括号起来的数组也就是列表。
json 提供了4中方法来实现Python对象与JSON对象进行快速交换。
dumps()将Python对象序列化为JSON字符串表示。dump()将Python对象序列化为JSON字符串然后保存到文件中。loads()把JSON格式的字符串反序列化为Python对象。loas()从文件中读取内容然后读取的字符串反序列化为Python对象。
import json
a {name:Tom,age:23}
b json.dumps(a) # 把序列化Python对象转换为JSON格式字符串
print(type(a)) # class dict
print(b,type(b)) # {name: Tom, age: 23} class str
c json.loads(b) # 把JSON格式字符串转换序列化Python对象
print(c[name]) # Tom
print(type(c)) # class dictwith open(test.json,w,encodingutf-8) as f:
# indent 表示格式化保存字符串默认为None小于0个空格json.dump(a,f,indent4) # 将字典对象序列化字符串# f.write(json.dumps(a,indent4)) # 与json.dump()效果一样with open(test.json,r,encodingutf-8) as f:d json.load(f) # 转换python对象f.seek(0) # 重写把文件指针移到文件开头e json.loads(f.read()) # 与json.load(f)执行效果一样print(d) # {name: Tom, age: 23}
print(e) # {name: Tom, age: 23}3.5 图像处理
Python Imaging Library 是免费的图像处理工具包是Python平台上的图像处理标准库。PIL提供强大的图形、图像处理功能API使用简单。
支持数十种格式如PNG、JPEG、BMP、GIF、TIFF等。支持黑白、灰阶、RGB、CMYK等多种色彩模式。图像基本操作如裁切、平移、旋转、改变尺寸、调置、剪切、粘贴等图像色彩处理如亮度、色调、对比、锐利度等。支持十多种滤镜。在图像中绘制点、线、面、几何形状、文字等。
图像的基本操作
open()打开图像new()创建新图像show()显示图像save()保存图像copy()复制图像
图像基本属性
format图像来源size图像大小mode图像模式
图像变换操作
resize()改变图像大小rotate()旋转图像transpose()翻转图像convert()转换图像filter()特效处理
图像合成、裁切、分离等操作
blend()合成图像crop()裁切图像paste()粘贴图像split()根据颜色通道分离图像merge()核查单一图像
图像像素点操作
point()对每个像素点执行一次函数调用操作getpixel()获取指定像素点的颜色值putpixel()为指定像素点设置颜色值
from PIL import Image
im Image.open(/Users/guanfawang/Downloads/Untitled-89.png)
w,h im.size
print(w,h) # 506 526
a im.resize((w//2,h//2)) # 改变尺寸
a.save(/Users/guanfawang/Downloads/a.png) # 保存新尺寸图像
a.rotate(90) # 旋转90度
a.show() # 打开查看图像
设计生成验证码图片# 第一步从PIL模块中导入图像类、绘图类、图像字体类和图像特效类
from PIL import Image,ImageDraw,ImageFont,ImageFilter
# 第二步初始化设置
import random # 导入随机数模块
def rndchar(): # 随机字母return chr(random.randint(65,90))
def rndcolor1(): # 随机颜色1return (random.randint(64,255),random.randint(64,255),random.randint(64,255))
def rndcolor2(): #随机颜色2return (random.randint(32,127),random.randint(32,127),random.randint(32,127))
width 60*4 # 初始化图像宽度单位为像素
height 60 # 初始化图像高度单位为像素
# 第三步创建图像对象、字体对象、绘图对象
image Image.new(RGB,(width,height),(255,255,255)) # 创建Image对象
font ImageFont.truetype(arialuni.ttf,36) # 创建Font对象
draw ImageDraw.Draw(image) # 创建Draw对象
# 生成麻点背景
for x in range(width): # 使用随机颜色绘图for y in range(height):draw.point((x,y),fillrndcolor1())
# 在画布上生成随机字符
for t in range(4): # 输出4个随机字符draw.text((60*t10,10),rndchar(),fontfont,fillrndcolor2())
image image.filter(ImageFilter.BLUR) # 模糊化处理
# 第四步保存图像
image.save(code.jpg,jpeg)