python之模块,包,异常,文件与高阶函数

目录

一,模块

1,概念

2,导入模块的三种方式

二,包

1,概念

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

3,导入包

三,异常

1,处理异常

2,异常的else

3,异常的finally

四,文件

1,打开文件

2,关闭文件

3,文件读写

4,演示代码如下

五,高阶函数

内置函数

内置高阶函数


一,模块

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中相同的数据留下

遍历输出大于两百的数据

  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小宝的宝呢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值