模块
python、ipython、IDLE是用来测试代码的。写代码保存的py文件就是模块
模块介绍
模块是一个包含所有你定义的函数和变量的文件,其扩展名为.py。模块可以被其它程序引入,以使用该模块中的函数等功能。这也是使用python标准库的方法。
导入模块的方式
直接导入模块
import module_name
在同一个文件夹下创建 lianxi 和 lianxi1 两个py文件
lianxi.py
def test1():
print('test1 ceshi')
def test2():
print('test2 ceshi')
lianxi1.py
import lianxi
lianxi.test1() # test1 ceshi
lianxi.test2() # test2 ceshi
通过 import 导入模块,用模块名. 去调用里面的函数,执行模块里面的方法,除非模块里面的函数用main函数保护起来。
从模块里面导入函数、类等
from module_name import name1,name2..
lianxi1.py
from lianxi import test1,test2
test1() # test1 ceshi
test2() # test2 ceshi
lianxi 和 lianxi1 在同一个文件夹下,可以直接写模块名称,若不在同一个文件夹下,需要写入相对路径。
* 为通配符,表示所有的内容
from module_name import *
lianxi1.py
from lianxi import *
test1() # test1 ceshi
test2() # test2 ceshi
此方法不常用,把文件中所有的内容都导入进来,一个模块中可能由很多方法、函数、类,全部导入的话会非常消耗内存,如果现有文件里有与导入的文件里存在同名函数,会导致命名冲突,进行覆盖。
lianxi1.py
from lianxi import *
def test1():
print('new_test1')
test1() # new_test1
test2() # test2 ceshi
把导入的函数重新命名,解决命名冲突问题
from module_name import func as test_func
from lianxi import test1 as T1
def test1():
print('new_test1')
T1() # test1 ceshi
test1() # new_test1
只能一个一个的导入并进行重命名,可以解决命名冲突,并精简函数名
常用内置模块
sys 模块
sys模块是与python解释器交互模块 ,可以通过此模块看解释器的版本,信息,搜索路径等。
sys模块常用方法
sys.argv[] --> 是从程序外部获取参数的桥梁-->[]
其中sys.argv[0]-->程序本身文件路径
sys.argv[1]-->外部运行时传递的参数
import sys
print(sys.argv) # ['D:/PycharmProjects/untitled1/lianxi1.py']
print(sys.argv[0]) # D:/PycharmProjects/untitled1/lianxi1.py 获得当前文件的绝对路径
res = sys.argv[1]
if res == 'yes':
print('是的,对了')

切换到 lianxi1.py所在的文件夹,通过 python lianxi1.py 传入参数 yes,执行lianxi1.py的代码。
sys.verson --> 用来显示解释器版本信息
print(sys.version) # 解析器版本的信息
# 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)]
sys.path --> 用来显示模块搜索路径,从当前文件夹往上,一级一级的找
sys.exit() -->用来退出程序,后面的代码不再执行
print('1'*20) # 11111111111111111111
print(sys.exit())
print('1'*20)
OS模块
os模块是与操作系统相关的模块
OS模块常用方法
os.getcwd() --> 用来打印当前工作的路径(目录、文件夹)
os.chdir('切换的路径') --> 改变当前工作目录
os.makedirs(‘文件夹的嵌套’) --> 以递归方式创建多个文件夹
os.removedirs(‘文件夹的嵌套’) --> 以递归方式删除多个空文件夹
os.mkdir(‘文件夹’) --> 创建单个文件夹,一次只能创建一个
os.rmdir(‘文件夹(的嵌套’)) --> 删除单个空文件夹
os.path.exists('文件夹的嵌套') --> 判断该路径下的文件或文件夹是否存在
os.path.join() --> 拼接路径
import os
print(os.getcwd()) # 当前工作路径 D:\PycharmProjects\untitled1
os.chdir('C:') # 切换当前工作路径为C盘
print(os.getcwd()) # C:\
os.makedirs('abc\\magic') # 在当前文件夹下,创建abc文件夹,在abc文件夹下创建magic文件夹
# 当文件夹存在的时候,再运行创建,会报错
os.removedirs('abc\\magic') # 删除创建的嵌套文件夹,文件夹若非空,则不能删除
os.mkdir('abc') # 一次只能创建一个文件夹
os.mkdir('abc\\magic') # 在abc文件夹下创建magic
os.rmdir('abc\\magic') # 在路径下只能删除一个文件夹
os.rmdir('abc') # 一次删除一个
print(os.path.exists('abc\\magic')) # 布尔值
dir_path = 'abc\\magic'
if not os.path.exists(dir_path):
os.makedirs(dir_path)
j_path = os.path.join(os.getcwd(),'abc\\magic') # 拼接,不需要考虑转义字符的问题
print(j_path) # D:\PycharmProjects\untitled1\abc\magic
time模块
time模块是与时间相关的模块,常用的是让程序等待几秒钟再运行,
time模块常用方法
time.sleep() --> 延迟执行时间,单位为秒,可以为浮点数
time.time() --> 秒时间戳,从197年到现在的秒数
time.localtime() --> 本地时间
time.strftime() --> 接收以时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定。
datetime也是与时间相关的模块
datetime.datetime.now() --> 输出当前时间
%Y Year with century as a decimal number.
%m Month as a decimal number [01,12].
%d Day of the month as a decimal number [01,31].
%H Hour (24-hour clock) as a decimal number [00,23].
%M Minute as a decimal number [00,59].
%S Second as a decimal number [00,61].
%z Time zone offset from UTC.
%a Locale’s abbreviated weekday name.
%A Locale’s full weekday name.
%b Locale’s abbreviated month name.
%B Locale’s full month name.
%c Locale’s appropriate date and time representation.
%I Hour (12-hour clock) as a decimal number [01,12].
%p Locale’s equivalent of either AM or PM.
import time
print('-'*10)
time.sleep(2.5)
print('*'*10)
print(time.time()) # 时间戳,1649584204.0715563,1970年到现在的秒数
print(time.localtime(1649584204.0715563)) # 传入时间戳,得到当前时间戳代表的时间,以元组的形式
# time.struct_time(tm_year=2022, tm_mon=4, tm_mday=10, tm_hour=17, tm_min=50, tm_sec=4, tm_wday=6, tm_yday=100, tm_isdst=0)
print(time.localtime()) # 不传时间戳,获取当前的时间,以元组形式
# time.struct_time(tm_year=2022, tm_mon=4, tm_mday=10, tm_hour=17, tm_min=52, tm_sec=22, tm_wday=6, tm_yday=100, tm_isdst=0)
# 时间格式化,将tuple转化为str,连接符不能为中文
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))
import datetime
print(datetime.datetime.now())
# 计算7天前的时间
res = datetime.datetime.now() - datetime.timedelta(days=7)
print(res)
random模块
random模块是随机模块
random模块常用方法
random.random() --> 随机生成[0,1)的数,左闭右开
random.randint(min,max) --> 随机生成整数[min,max]
random.choice(seq) --> 随机在序列取元素
random.shuffle(seq) --> 打乱传入的列表内部顺序,无返回值,只能传入列表
random.sample(seq,num) --> 从seq中随机去num个元素
random.randrange(start,stop[,step]) --> 随机取整数[start,stop)
random.uniform(min,max) --> [min, max)范围内的随机浮点数
import random
print(random.random()) # 生成[0,1)的随机数,左闭右开
print(random.random()*10) # 生成[0,10)的随机数
print(random.uniform(0,10)) # 生成[0,10)的随机数
li = list('123456')
print(random.choice(li)) # 随机在序列中取值
li1 = [1,2,3,5,6]
# li1 = '123456' # 报错
# li1 = (1,2,3,5,6) # 报错
# li1 = {1,2,3,5,6} # 报错
random.shuffle(li1) # 只能传入列表,否则报错
print(li1)
print(random.randrange(1,10,2)) # 从range中取随机数
例1.生成6位数字的验证码
import random
def v_code():
yzm = ''
for i in range(6):
num = random.randint(0,9)
yzm += str(num)
print(yzm)
v_code()
例2.生成8位数字、字母混合的验证码
print(ord('A')) # 65
print(chr(65)) # A

import random
def v_code1():
yzm = ''
li = list(range(48,58)) + list(range(65,91)) + list(range(97,123))
for i in range(8):
num = chr(random.choice(li))
yzm += num
print(yzm)
v_code1()
yzm = ''
li = list(range(48,58)) + list(range(65,91)) + list(range(97,123))
num = random.sample(li, 8)
for i in num:
yzm += chr(i)
print(yzm)
Json模块
Json是一种使用广泛的轻量数据格式. Python标准库中的json模块提供了Json数据的处理功能。
由于Json与python中的字典格式非常像。所以python中的json模块也相当于是用来使json与字典做转换。但是要注意的是,json中的数据必须使用双引号包裹。
Json模块常用方法
json.loads() --> json转为字典(适用于语句)
json.dumps() --> 字典转为json(适用于语句)
json.load() --> json转为字典(适用于文件,下一节文件操作中讲)
json.dump() --> 字典转为json(适用于文件,下一节文件操作中讲)
dict --> str
1.强转
data = {"age":18}
print(data) # {'age': 18}
print(str(data),type(str(data))) # {'age': 18} <class 'str'> 单引号
2.json
import json
data = {"age":18}
res = json.dumps(data)
print(res,type(res)) # {"age": 18} <class 'str'>
str ---> dict
import json
data = '{"age":18}'
# data = "{'age':18}" # 会报错,json中key和value值必须是双引号
res = json.loads(data)
print(res,type(res)) # {"age": 18} <class 'str'>
print(res['age']) # 18
本文详细介绍了Python中的模块概念及其使用,包括导入模块的多种方式,如直接导入、从模块导入特定函数、使用通配符导入等。同时,讲解了几个常用的Python内置模块,如sys用于与解释器交互,os模块提供操作系统相关功能,time模块处理时间,random模块生成随机数,以及json模块进行数据的Json格式转换。此外,还通过示例展示了如何生成验证码及处理Json数据。
765

被折叠的 条评论
为什么被折叠?



