模块
概念
Python模块(Module),是一个Python文件,以.py结尾,包含了Python对象定义和Python语句。模块能定义函数,类,变量,也能包含可执行的代码
导入模块
方式1:import 模块名
from 模块名 as 别名
import Snail
使用模块
语法:模块名.功能
#实例化模块中的类
person = Snail.Person()
person.eat()
方式2:from 模块名 import 功能名
from 模块名 import 功能名 as 别名
from Snail import Person
使用模块
语法:功能
person = Person()
person.sleep("林夕")
方式3:from 模块名 import *
from Snail import *
使用模块
语法:功能
person = Person()
person.sleep("林夕")
__all__列表
all = [功能1,功能2…]
__all__ = ["Person","play"]
使用 from 模块名 import *方式导入模块,只能导入__all__列表中的功能模块
包
概念:包将有联系的模块组织在一起,放在同一个文件夹下,这个文件夹就称之为包
包中会有一个默认的文件__init__.py文件
控制着包的导入行为
导入包
方式1
import 包名.模块名
调用 包名.模块名.功能
import myPackage.Snail
import myPackage.Snail
person = myPackage.Snail.Person()
person.sleep("林夕")
import 包名.模块名 as 别名
调用 别名.功能
import myPackage.Snail as s
person = s.Person()
person.sleep("林夕")
方式2
from 包名.模块名 import 功能名
调用 功能
from myPackage.Snail import Person
person = Person()
print(person.name)
方式3
from 包名 import *
调用 模块名.功能
from myPackage import *
person = Snail.Person()
person.sleep("林夕")
可以在__init__.py文件中添加__all__ = [],控制允许导入的模块列表
__all__ = ["Snail"]
异常
处理异常
捕获指定异常类型
try:
可能发生错误的代码
except 异常类型:
如果出现异常执行的代码
try:
a = 6/2
except ZeroDivisionError:
print("除数不能为0")
捕获多个指定异常
try:
可能发生错误的代码
except (异常类型1,异常类型2):
如果出现异常执行的代码
捕获所有异常
try:
可能发生错误的代码
except Exception:
如果出现异常执行的代码
异常的捕获信息
try:
可能发生错误的代码
except 异常类型 as result:
如果出现异常执行的代码
#result为异常的信息
try:
a = 6/0
except Exception:
print("除数不能为0")
异常的else
try:
可能发生错误的代码
except Exception:
如果出现异常执行的代码
else:
没有异常时执行的代码
try:
a = 6/2
except Exception:
print("除数不能为0")
else:
print(f"a={a}")
异常的finally
try:
可能发生错误的代码
except Exception:
如果出现异常执行的代码
else:
没有异常时执行的代码
finally:
无论是否有异常都要执行的代码
try:
a = 6/2
except Exception:
print("除数不能为0")
else:
print(f"a={a}")
finally:
print("运算结束")
自定义异常
自定义类继承Exception
重写__init__
重写__str__ 设置抛出异常的描述信息
class MyException(Exception):
def __init__(self,length,minLength):
self.length = length
self.minLength = minLength
def __str__(self):
return f"输入的长度为{self.length},要求长度最少{self.minLength}"
使用【raise 自定义异常类】捕获异常
try:
pwd = input("请输入密码:")
if len(pwd) < 6:
raise MyException(len(pwd),6)
except MyException as result:
print(result)
else:
print(pwd)
文件
打开文件
在Python中,使用open()函数,可以打开一个已经存在的文件,或者创建一个新文件
语法:f=open(name, mode,encoding=“UTF-8”)
name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)
mode:设置打开文件的模式(访问模式),只读、写入、追加等,主要为 “r”,“w”,“a”
f = open("readme.txt","r",encoding="UTF-8")
关闭文件
f.close()
文件读写
读
read(num)
num表示从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据
content = f.read(2)
print(content)
readline()
一次只读取一行即遇到‘\n’返回
content = f.readline()
print(content)
readlines()
读取整个文件,并返回列表,一行为一个元素
content = f.readlines()
print(content)
写
write(“内容”)
f.write("林夕")
高阶函数
把函数作为参数传入,这样的函数称为高阶函数,高阶函数是函数式编程的体现
内置函数
abs():
对数字求绝对值
print(abs(-5))
round():
数字的四舍五入
print(round(12.523))
内置高阶函数
map()
map(func,lst):将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的列表(Python2)/迭代器(Python3)
案例:计算list1序列中各个数字的2次方
list1 = [1,2,3,4,5]
def two(x):
return x ** 2
result = map(two,list1)
print(list(result))
reduce()
reduce(func,lst),其中func必须有两个参数,每次func计算的结果继续和序列的下一个元素做累计计算
在使用reduce()函数之前,必须导入模块 functools
案例:计算list1序列中各个数字的累加和
import functools
list1 = [1,2,3,4,5]
def add(x,y):
return x+y
print(functools.reduce(add, list1))
filter()
filter(func,lst)函数用于过滤序列,过滤掉不符合条件的元素,返回一个filter对象,可将其转换成list
案例:取出list1序列中的偶数
list1 = [1,2,3,4,5]
def ou(x):
return x % 2 == 0
result = filter(ou,list1)
print(list(result))
python模块、包、文件、异常、高阶函数就到这了,88