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

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

模块

ython 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。

模块让你能够有逻辑地组织你的 Python 代码段。

把相关的代码分配到一个模块里能让你的代码更好用,更易懂。

模块能定义函数,类和变量,模块里也能包含可执行的代码。

"""
导入模块
方式一 :import 模块名
方式二 :from 模块名 import 功能
方式三: from 模块名 import *
"""

# import Sinal

# import Sinal as a
# # 实列化模块中的类  加模块
# person = a.Person()
#
# person.eat()
# person.sleep("楠楠")
#
# a.playDD()
# print(a.age)


# 方式二 :from 模块名 import 功能
# from Sinal import Person
# from Sinal import playDD
# from Sinal import age
#
# person = Person()
# person.sleep("小花")
#
# playDD()
# print(age)

# 方式三: from 模块名 import *
from myPackage.Sinal import *
person = Person()
person.sleep("小草")



1、什么是包?

官网解释
Packages are a way of structuring Python’s module namespace by using “dotted module names”
包是一种通过使用‘.模块名’来组织python模块名称空间的方式。

具体的:包就是一个包含有__init__.py文件的文件夹,所以其实我们创建包的目的就是为了用文件夹将文件/模块组织起来

需要强调的是:

  1. 在python3中,即使包下没有__init__.py文件,import 包仍然不会报错,而在python2中,包下一定要有该文件,否则import 包报错

  2. 创建包的目的不是为了运行,而是被导入使用,记住,包只是模块的一种形式而已,包的本质就是一种模块

2、为何要使用包

包的本质就是一个文件夹,那么文件夹唯一的功能就是将文件组织起来 随着功能越写越多,我们无法将所以功能都放到一个文件中,于是我们使用模块去组织功能,而随着模块越来越多,我们就需要用文件夹将模块文件组织起来,以此来提高程序的结构性和可维护性

3、注意事项

1.关于包相关的导入语句也分为import和from … import …两种,但是无论哪种,无论在什么位置,在导入时都必须遵循一个原则:凡是在导入时带点的,点的左边都必须是一个包,否则非法。可以带有一连串的点,如item.subitem.subsubitem,但都必须遵循这个原则。但对于导入后,在使用时就没有这种限制了,点的左边可以是包,模块,函数,类(它们都可以用点的方式调用自己的属性)。

2、import导入文件时,产生名称空间中的名字来源于文件,import 包,产生的名称空间的名字同样来源于文件,即包下的__init__.py,导入包本质就是在导入该文件

3、包A和包B下有同名模块也不会冲突,如A.a与B.a来自俩个命名空间

"""
包

方式1import 包名模块名
方式2: from 包名.模块名 import 功能
方式3:from 模块名 import 功能
"""

# 方式1import 包名模块名
# import myPackage.Sinal
#
# person = myPackage.Sinal.Person()
# person.sleep(23)
#
# myPackage.Sinal.playDD()


# 方式二
# from myPackage.Sinal import Person
# person = Person()
# person.sleep("nn")

# 方式3
from myPackage.Sinal import *
person = Sinal.Person()
person.sleep("nn")

文件


"""
文件
a:追加  append 没有文件的时候会报错
r:读取 read 没有文件的时候会报错
w:写 writer 在文件没有的时候自动创建 
"""

f = open("readme.txt", "r", encoding="UTF-8")
# f.write("好好学习,天天向上")


# 读文件
# content = f.read(2)
# content = f.readline()
content = f.readlines()
print(content[1])

# 复制
try:
   f = open("C:/test.py", "r")
   content = f.read()
   print(content)

   a = open("D:/test.py", "w")
   a.write(content + "这个成功了")
   a = open("D:/test.py", "r")
   read = a.read()
   print(read)

except Exception:
    print("不好意思了,失败了呢")
else:
    print("好棒,成功了")

在这里插入图片描述
在这里插入图片描述

异常

什么是异常
异常是一个事件,该会在程序执行过程中发生,影响了程序正常执行。一般情况下,在Python无法正常处理程序时就会发生一异常。异常是Python对象,表示一个错误。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
常见异常类型
异常名称 描述
FileNotFoundError 找不到指定文件的异常
NameError 未声明/初始化对象(没有属性)
BaseExcption 所有异常的基类

异常处理语句
try…except
try…except…finally
raise

"""
异常

语法格式:
try:
    可能会出现的异常代码
except 异常类型1,异常类型2 | Exception:
    出现异常,解决异常的办法
else:正常的代码
finally:
    无论有没有异常都会执行
"""

# 自定义异常  判断密码长度并能小于6位大于8位

# try:
#     a = 6/0
# except ZeroDivisionError:
#     print("不能这样除呢")
# else:
#     print(a)
# finally:
#     print("结束了,拜拜")

class MyException(Exception):

    def __init__(self, length, minLength):
        self.length = length
        self.minLength = minLength

    def __str__(self):
        return f"输入的长度为{self.length},要求长度最少{self.minLength}位"


# try:
#     a = 6/0
# except ZeroDivisionError:
#     print("除数不能为0")
# else:
#     print(f"a={a}")
# finally:
#     print("运算结束")

try:
    pwd = input("请输入密码:")
    if len(pwd) < 6:
        raise MyException(len(pwd), 6)
except MyException as result:
    print(result)
else:
    print(pwd)

高阶函数

什么是高阶函数?
  高阶函数:一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(若返回值为该函数本身,则为递归),满足其一则为高阶函数。

"""
高阶函数
map()
reduce()
filter()
"""

import functools

# 内置函数
# print(abs(-5))
# print(round(12.99, 1))

# 高阶函数:
# map()
list1 = [1, 2, 3, 4, 5]

# def two(x):
#     return x ** 2

# result = map(two, list1)
# print(list(result))

# reduce()

# def add(x, y):
#     return x+y
#
#
# print(functools.reduce(add, list1))


# filter
def ou(x):
    return x % 2 == 0

result = filter(ou, list1)
print(list(result))


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值