Python之模块、包、文件、异常、高阶函数

目录

1.模块

2.包

3.文件

4.异常

5.高阶函数


1.模块

1.1 概念

Python模块(Module),是一个Python文件,以.py结尾,包含了Python对象定义和Python语句。模块能定义函数,类,变量,也能包含可执行的代码

1.2 导入模块

方式1:

import 模块名 (as 别名)
# 使用模块语法:
模块名(别名).功能

方式2:

from 模块名 import 功能名 (as 别名)
# 使用模块语法:
功能

方式3:

from 模块名 import *
# 使用模块语法:
功能

   __all__ 列表语法:__all__ = [功能1,功能2......]
   注意:使用 from 模块名 import *方式导入模块,只能导入__all__列表中的功能模块

2.包

包中会有一个默认的文件__init__.py文件【控制着包的导入行为】

2.1 概念

包将有联系的模块组织在一起,放在同一个文件夹下,这个文件夹就称之为包。

2.2 导入包

方式1:

import 包名.模块名
# 调用
包名.模块名.功能
    
import 包名.模块名 as 别名
# 调用
别名.功能

方式2:

from 包名.模块名 import 功能名
# 调用
功能

from 模块名 import 功能名 as 别名
# 调用
别名.功能

方式3:

from 包名 import *
# 调用
模块名.功能

  注意:可以在__init__.py文件中添加__all__ = [],控制允许导入的模块列表

3.文件

3.1 打开文件

在Python中,使用open()函数,可以打开一个已经存在的文件,或者创建一个新文件

# 语法
f = open(name, mode,encoding="UTF-8")


# 用的最多的形式
# 如果文件不存在  自动创建
with open('a.txt','a',encoding='utf-8') as f:
    f.write("\nhello")

  --name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)
  --mode:设置打开文件的模式(访问模式),只读read、写入write、追加append、二进制binary等,主要为 "r","w","a","b"
  --encoding:编码方式【如果是二进制或其他类型的数据就默认,就不特意设置编码】

3.2 关闭文件:f.close()

3.3 文件读写

①读:

  --read(num):num表示从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据
  --readline():一次只读取一行即遇到‘\n’返回
  --readlines():读取整个文件,并返回列表,一行为一个元素

②写:write("内容")

若对已存在的文件进行write,会覆盖文件内原本的内容,这时可以使用append进行内容的追加

4.异常

4.1 处理异常

①捕获指定异常类型:

try:
    可能发生错误的代码
except 异常类型:
    如果出现异常执行的代码

②捕获多个指定异常:

try:
    可能发生错误的代码
except (异常类型1,异常类型2):
    如果出现异常执行的代码

③捕获所有异常:

try:
    可能发生错误的代码
except Exception:
    如果出现异常执行的代码

④异常的捕获信息:

try:
    可能发生错误的代码
except 异常类型 as result:
    如果出现异常执行的代码
    #result为异常的信息

4.2 异常的else

try:
	可能发生错误的代码
except Exception:
	如果出现异常执行的代码
else:
	没有异常时执行的代码

4.3 异常的finally

try:
	可能发生错误的代码
except Exception:
	如果出现异常执行的代码
else:
	没有异常时执行的代码
finally:
	无论是否有异常都要执行的代码

4.4 自定义异常

①自定义类继承Exception
    重写__init__
    重写__str__
        设置抛出异常的描述信息
②使用【raise 自定义异常类】捕获异常

    案例:判断输入字符串的长度,如果小于指定的长度就报错

class ShortInputException(Exception):
 
    def __init__(self, length, least_length):
        super().__init__()
        self.length = length
        self.least_length = least_length
 
    def __str__(self):
        return '您输入的长度为:{},最短长度为:{}'.format(self.length, self.least_length)
 
 
try:
    content = input('请输入内容:')
    if len(content) < 5:
        raise ShortInputException(len(content), 5)
    else:
        print('符合要求')
except ShortInputException as e:
    print(e)
'''
请输入内容:ASD
您输入的长度为:3,最短长度为:5
'''

5.高阶函数

5.1 概念

把函数作为一个参数传入另一个函数中去,这样的函数称为高阶函数,高阶函数是函数式编程的体现

5.2 内置函数

abs():对数字求绝对值
round():数字的四舍五入

5.3 内置高阶函数

①map()
    map(func,lst):将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的列表
    案例:计算lst序列中各个数字的2次方

func = lambda a:a*a
# map函数  接收几个值  就给出几个值
lst = [1,2,3,4,5,6,7,8]
m = map(func,lst)   # [1,4,9.....]
for i in m:
    print(i)

②reduce()
    reduce(func,lst),其中func必须有两个参数,每次func计算的结果继续和序列的下一个元素做累计计算
    注意:在使用reduce()函数之前,必须导入模块 functools
    案例:计算lst序列中各个数字的累加和

from functools import reduce as r

func = lambda a,b:a+b
lst = [1,2,3,4,5,6,7,8]
print(r(func,lst))

③filter()
    filter(func,lst)函数用于过滤序列,过滤掉不符合条件的元素,返回一个filter对象,可将其转换成list

    案例:取出lst序列中的偶数

lst = [1, 2, 3, 4, 5, 6, 7, 8]
def func(n):
    if n % 2 == 0:
        return True
    return False

f = filter(func, lst)
for i in f:
    print(i)

 今天的学习记录就到这了,拜拜!

说明:学习记录,若有错误,欢迎指正,若有疑问,欢迎评论

上一篇:开工啦!批量向PDF文件添加中文水印...


下一篇:python类中属性的前置双下划线 简单了解