目录
2,包中会有一个默认的文件__init__.py文件控制着包的导入行为
一,模块
1,概念
Python模块(Module),是一个Python文件,以.py结尾,包含了Python对象定义和Python语句。模块能定义函数,类,变量,也能包含可执行的代码
2,导入模块的三种方式
方式1:
import 模块名
from 模块名 as 别名
使用模块,语法:模块名.功能
import test0 s=test0.Student() import test0 as t s=t.Student()
方式2:
from 模块名 import 功能名
from 模块名 import 功能名 as 别名
使用模块,语法:功能
from test0 import Student s=Student() from test0 import Student as s s=s()
方式3:
from 模块名 import *
使用模块,语法:功能
__all__列表
__all__ = [功能1,功能2......]
from test0 import *在test0模块中:
# 限制导入的模块 __all__=['Student']
注意:使用 from 模块名 import *方式导入模块,只能导入__all__列表中的功能模块
test0完整代码
# 限制导入的模块
__all__=['Student']
class Student(object):
name:str='阿姨'
__age:int=18
def study(self):
pass
class Son(object):
name:str='小宝'
__age:int=18
def study(self):
pass
s = Student()
print(s.name)
ss = Son()
print(ss.name)
二,包
1,概念
包将有联系的模块组织在一起,放在同一个文件夹下,这个文件夹就称之为包
2,包中会有一个默认的文件__init__.py文件控制着包的导入行为
使用from temp import *导入包时,首先从这里选择可导包名
3,导入包
方式1
import 包名.模块名 调用:包名.模块名.功能 import temp.test1 temp.test1.fn1() import 包名.模块名 as 别名 调用:别名.功能 import temp.test2 as t2 t2.fn2()
方式2
from 包名.模块名 import 功能名
调用:功能from temp.test1 import fn1 fn1()from 模块名 import 功能名 as 别名
调用:别名.功能
方式3
from 包名 import *
调用:模块名.功能from temp import *
注意:可以在__init__.py文件中添加__all__ = [],控制允许导入的模块列表
在__init__.py文件中控制只允许导入test1
导入模块时输入提示只有test1,而没有test2
调用时输入提示也只有test1里面的方法
如果要导入test2,需手动输入,根据红色波浪线和红色小灯泡导入
三,异常
1,处理异常
捕获指定异常类型
try:
可能发生错误的代码
except 异常类型:
如果出现异常执行的代码try: print(1/0) except ZeroDivisionError: print("除数不能为0")
捕获多个指定异常
try:
可能发生错误的代码
except (异常类型1,异常类型2):
如果出现异常执行的代码
捕获所有异常
try:
可能发生错误的代码
except Exception:
如果出现异常执行的代码try:
print(1/0)
except Exception:
print("报错了")
异常的捕获信息
try:
可能发生错误的代码
except 异常类型 as result:
如果出现异常执行的代码
#result为异常的信息
2,异常的else
try:
可能发生错误的代码
except Exception:
如果出现异常执行的代码
else:
没有异常时执行的代码
3,异常的finally
try:
可能发生错误的代码
except Exception:
如果出现异常执行的代码
else:
没有异常时执行的代码
finally:
无论是否有异常都要执行的代码try: print(1/0) except ZeroDivisionError: print("除数不能为0") except Exception: print("报错了") finally: print("如果报错也执行") print("如果不报错也执行")
4,自定义异常
自定义类继承Exception
重写__init__
重写__str__ --------->设置抛出异常的描述信息class MyException(Exception): pass i=int(input("请输入一个数字")) if i>2: raise MyException()
使用【raise 自定义异常类】捕获异常
四,文件
1,打开文件
在Python中,使用open()函数,可以打开一个已经存在的文件,或者创建一个新文件
语法: f=open(name, mode,encoding="UTF-8")
name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)
mode:设置打开文件的模式(访问模式),只读、写入、追加等,主要为 "r","w","a"
2,关闭文件
f.close()
3,文件读写
读
read(num)
num表示从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据
readline()
一次只读取一行即遇到‘\n’返回
readlines()
读取整个文件,并返回列表,一行为一个元素写
write("内容")
4,演示代码如下
# 打开文件 # open(path,mode,) # a.txt:放在当前目录下 # model w---write写入模式 r---read读取模式 b--binary二进制 a---append追加模式 # 文本使用utf-8,图片是二进制的,使用utf-8会乱码 # wb rb 结合 # encoding 字符编码 如果是二进制或者其他类型的数据,使用默认;;否则使用utf-8 # try: # f=open('a.txt','r',encoding="utf-8") # # f就是a.txt文件,准确来说是文件的流 # except FileNotFoundError: # open('a.txt','w',encoding='utf-8') # finally: # f=open('a.txt','r',encoding="utf-8") # # 可以限制字符长度 # # print(f.read(2)) #2是字符个数 # print(f.readline()) # print(f.readline()) # print(f.readline()) # print(f.readline()) # print(f.readline()) # print(f.readline()) # print(f.readline()) # f.close() # 用写的模式去读文件,文件的内容会先被清空(覆盖),如果文件不存在,会自动创建一个文件 # 用的最多的形式 # with open('a.txt','a',encoding="utf-8") as f: # f.read(2) # with open('a.txt','w',encoding="utf-8") as f: # # f.close() # # pass # f.write("\nhello") # 因此使用追加append---a # 追加的流不能读,报错,没有读的权限
五,高阶函数
把函数作为参数传入,这样的函数称为高阶函数,高阶函数是函数式编程的体现
内置函数
abs():对数字求绝对值
round():数字的四舍五入
内置高阶函数
map()
map(func,lst):将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的列表(Python2)/迭代器(Python3)
案例:计算list1序列中各个数字的2次方
# map函数 接收几个值,就给出几个值
fna=lambda a:a*a
ns=[1,2,3,4,5,6,7,8]
m=map(fna,ns)#[1,4,9]
for i in m:
print(i)
reduce()
reduce(func,lst),其中func必须有两个参数,每次func计算的结果继续和序列的下一个元素做累计计算
在使用reduce()函数之前,必须导入模块 functools
案例:计算list1序列中各个数字的累加和
from functools import reduce as r
fn=lambda a,b:a+b
ns=[423,4354,32,456,345,21,345234]
print(r(fn, ns))
filter()
filter(func,lst)函数用于过滤序列,过滤掉不符合条件的元素,返回一个filter对象,可将其转换成list
案例:取出大于200的数字
ns=[423,4354,32,456,345,21,345234]#把大于200的数字拿出来
fn=lambda a:a>200
f=filter(fn,ns)#[423,4354,456,345,345234]
for i in f:
print(i)
数组ns
函数fn,fn相当于一个过滤器,对ns里的数据进行筛选,符合条件的数据被留下,不符合的被舍弃
再用filter将fn筛选留下来的数据,与ns数组里的数据进行对比,将ns中与fn中相同的数据留下
遍历输出大于两百的数据