python11——模块与包
1.模块
模块是事先写好的文件,用来实现某些特定的功能,当需要使用的时候用import来导入模块
分类:内置模块(python官方自己写的模块)、第三方模块(一些组织等提供的模块可以公开使用和下载)、自定义模块(自己定义的模块)
2.模块的导入:
import:
import time
import osstart = time.perf_counter()
print(os.listdir())
end = time.perf_counter()
print(end - start)
当使用某个模块的函数方法的时候直接用模块.函数方法即可
from…import:即从某个模块导入某个方法,这种方法可以直接使用函数名
from time import perf_counter as counter, sleep#用逗号表示调用多个方法
#若调用time模块的所有方法:
#from time import *
from os import listdir
start = counter()
sleep(1)
print(listdir())
end = counter()
print(end - start)
#使用from就不用用模块.函数的形式了,可以直接使用函数
当模块的函数名字过于复杂,可以用as来为该函数取一个别名来简化操作,之后函数的使用可以直接使用别名
3.导入自定义模块
相当于自己写了一个python文件,然后使用import 来导入该python文件所在的路径,该路径可以是绝对路径也可以是相对路径,如这里使用的是相对路径:
相对路径和绝对路径是针对包而言的,所以导入时能使用包外的文件来导入包内的文件,但是不能直接运行包内的文件,因为不能把包内的文件当做主文件
4.模块内的测试:当我们在某个模块中写了一个函数的时候,想要测试,若直接把模块导入要运行的文件中再进行测试过于麻烦,可以使用这种方式:
def add(x, y):return x+y
def sub(x,y):return x-yif __name__ == '__main__':print(__name__)#当该模块被其它模块导入的时候就不是__main__了,故该方法可做调试用print(add(1,2))
当运行模块的时候,该模块的名字是__main__,所以可以对该模块进行测试。然后当要运行的文件导入该模块的时候,该模块的名字就不是__main__了,运行的文件名是__main__。(相当于c语言中的main函数,即主要运行的函数)
而一般导入一个模块的时候会事先执行该模块的内容,所以导入该模块的时候由于名字不是__main__,就会自动跳过这个if下面要执行的内容。所以使用if __name == 'main’可以对该模块进行测试,而导入该模块的时候又可以跳过这个测试过程。
5.包中的__init__文件:
包:将一些功能类似的模块集中在一起管理
从包中导入某个模块:
from package1 import module1
from package2 import module3print(dir(module1))
print(module1.__name__)
print(module1.__package__)
当开始创建一个包的时候,一般也会创建一个__init__文件,来将一些必要的文件导入,这样管理者不用记住哪个方法在哪个模块下然后再一一导入。
然后主文件直接调用这个包中的一些方法即可使用,调用包的时候先去查找这个包下面是否有__init__文件,如果有就执行,所以init文件也被称为初始化文件。
如package2的__init__文件
from package2.module3 import *
from package2.module4 import *
module3文件:
print("this is module3.py file")__all__ = ["add","subtraction","multiplication","division","test"]
#__all__用来选择可以导入的方法,不在__all__里的方法无法导入def add():print("this is add function")def subtraction():print("this is subtraction function")def multiplication():print("this is subtraction function")def division():print("this is division function")def test():print("this is test function")
module4文件:
class Student(object):def __init__(self,name):self.name = namedef get_student_name(self):print(f"学生姓名是{self.name}")
运行的主文件:
from package2 import add,subtraction,multiplication,division,Student,testadd()
subtraction()
multiplication()
division()
test()student = Student("Andy")
student.get_student_name()
这样管理者就不需要记下add, substraction,test等方法在哪个模块,直接导入方法即可
__init__文件的应用场景:
6.random模块:
import random#随机生成一个0——1之间的浮点数
print(random.random())print(random.randint(1,3))#包含左右值, 随机生成一个start到stop之间的数据#range(1,3)则不包含右值
print(random.randrange(1,3))#与range类似,不包含右值,默认步长为1
print(random.randrange(1,10,2))#从1到10随机生成一个奇数,即每隔2个数来选,步长为2#从字符串,元组,列表中随机选择一个数
string = 'hello world'
tuple_value = (1,2,3,4,5)print(random.choice(tuple_value))list_value = [1,2,3,4,5]print(random.choice(list_value))random.shuffle(list_value)print(list_value)#元组字典为不可变类型,无法使用此方法
输出:
7.time模块
基本概念:
time时间模块
import timetimestampe = time.time()#获取时间戳print(time.gmtime(timestampe))#格林威治时间,为时间元组形式
print(time.localtime(timestampe))#获取当地时间,为时间元组形式
stuct_time = time.localtime(timestampe)#转化为人类能看懂的形式print(time.strftime("%Y-%m-%d", stuct_time))#可自定义格式
print(time.strftime("%Y-%m-%d %H:%M:%S", stuct_time))#进一步输出时间
输出:
time.struct_time(tm_year=2021, tm_mon=2, tm_mday=18, tm_hour=8, tm_min=17, tm_sec=4, tm_wday=3, tm_yday=49, tm_isdst=0)
time.struct_time(tm_year=2021, tm_mon=2, tm_mday=18, tm_hour=16, tm_min=17, tm_sec=4, tm_wday=3, tm_yday=49, tm_isdst=0)
计算程序运行时间:
#计算程序的运行时间
def for_loop():for i in range(10000):#print(i)pass#利用时间戳来计算
start = time.time()
for_loop()
end = time.time()
print(end-start)#time.perf_counter()
start2 = time.perf_counter()
for_loop()
end2 = time.perf_counter()
print(end2-start2)
获取当前日期:
import time
#使用struct_time获取年月日
#获取时间戳
timestamp = time.time()
strct_time = time.localtime(timestamp)
year = strct_time.tm_year
month = strct_time.tm_mon
day = strct_time.tm_mday
print(f'今天是{year}年{month}月{day}日')#使用timeformat获取年月日
date_str = time.strftime('%Y-%m-%d', strct_time)
print(date_str)result = date_str.split('-')
print(result)
print(f'今天是{result[0]}年{result[1]}月{result[2]}日')
倒计时:
import time
for i in range(10, 0, -1):print(i)time.sleep(1)#隔一秒输出一个数
8.json模块
import json#字典转化为json格式dict_value = {}
dict_value['name'] = 'andy'
dict_value['age'] = 18
dict_value['hobby'] = ['basketball','football','baseball']
print(dict_value)
print(type(dict_value))
json_str = json.dumps(dict_value)#以字符串的形式展示
print(json_str)
print(type(json_str))"""
#存储到文件中
file = open("json.txt", "w")
json.dump(dict_value, file)#将Python数据转化为json,并存储在文件中#将json转化为字典
#json格式在python中表现为字符串,创建时需外层使用单引号,里层使用双引号
json_str = '{"name":"andy","age":18}'
result = json.loads(json_str)
print(type(result))
"""
file = open("json.txt","r")
result = json.load(file)#将一个文件中的数据加载为python格式
print(result)
9.第三方模块操作
python11——模块与包相关推荐
- python笔记6 模块与包 程序开发规范 包 re sys time os模块
模块与包 python 模块首引用加载到内存,如果再次引用此模块,直接从内存中读取. python文件分为:执行文件(解释器运行的文件),被引用文件(import) 模块引用一共发生了3件事: 1.他 ...
- python之路——模块和包
一.模块 1.什么是模块? 常见的场景:一个模块就是一个包含了Python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1.使用Python编 ...
- Python中的类、模块和包究竟是什么?
Python培训教程:Python中的类.模块和包究竟是什么?在Python和其他编程语言中,都有类似或相同的概念,如对象.类.模块.包,名称都是一样的,只不过会有细微的一些区别,正是因为有这些存在, ...
- python模块和包用法详解(__all__)
1. 模块 Python 模块(Module),是⼀个 Python ⽂件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块能定义函数,类和变 ...
- python类、模块、包
通常包总是一个目录,可以使用import导入包,或者from + import来导入包中的部分模块.包目录下为首的一个文件便是 __init__.py.然后是一些模块文件和子目录,假如子目录中也有 _ ...
- python入门是哪个包_python入门(十):模块、包
模块:py文件 包:目录,目录里面包含__init__.py,内容可以是空 里面可以包含多个模块文件,还可以包含子包 1.模块和包,可以很方便的提供给其他程序以复用 1) 利于组织复杂工程 我们写代码 ...
- python哪里下载import包-【Python实战】模块和包导入详解(import)
1.模块(module) 1.1 模块定义 通常模块为一个.py文件,其他可作为module的文件类型还有".pyo".".pyc".".pyd&qu ...
- python哪里下载import包-详解python中的模块及包导入
python中的导入关键字:import 以及from import 1.import import一般用于导入包以及模块. 不过有个小问题: (1)当导入的是模块的时候是可以直接可以使用模块内的函数 ...
- python 模块与包
什么是模块? 模块就是一组功能的集合体,我们的程序可以导入模块来复用模块里的功能.即一个模块就是一个包含了一组功能的python文件,比如spam.py,模块名为spam,可以通过import spa ...
最新文章
- 不忘历史才能开辟未来,善于继承才能善于创新
- TOJ_1003题解
- InstallShield 2012 Spring评估试用(1): 支持Windows 8和Windows Server 2012操作系统
- [转载] Python的生成器
- vue-resource.js的get和post的正确用法
- 蒙特卡洛方法_程序媛转TA之理论篇十三:蒙特卡洛方法
- MySQL常用存储引擎
- 关于JNI的几个问题
- 快速排序多种方法代码Python
- Entity Framework 学习总结之三:架构组成介绍
- 自动化部署mysql主从复制集群_使用docker部署mysql主从复制集群
- [论文笔记]R-NET: MACHINE READING COMPREHENSION WITH SELF-MATCHING NETWORKS
- 45.Linux/Unix 系统编程手册(下) -- System V IPC 介绍
- 撰写项目的解决方案要点解析
- 人体姿态估计之CPN中文文献翻译
- mysql数据库字符集实践详解_mysql数据库 详解 之 自学成才1
- 极狐Gitlab操作手册
- 计算机视觉算法面试准备
- MATLAB实现利用三个不共线的点绘制圆(包括圆心和半径的求解)
- 计算机与机械专业 有什么大学排名,2017机械排名211大学排名
热门文章
- View系列 : View项目:乘风破浪的小船,波浪动画
- win10配置深度学习环境(anaconda3+pytorch1.9+python3.7+cuda10.2)
- Oracle数据库琐屑运用阅历六则
- 基于Matlab的SSB信号调制和解调(内附源码)
- 引入tiptap之后直接报错Duplicate use of selection JSON ID cell
- 网络生命大百科全书项目
- 湖师大2022考研复试准备
- 数码相机使用经验技巧
- div靠边隐藏_停靠在左边的DIV+CSS隐藏菜单
- 将页面元素隐藏的10种方法