模块
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文件的文件夹,所以其实我们创建包的目的就是为了用文件夹将文件/模块组织起来
需要强调的是:
-
在python3中,即使包下没有__init__.py文件,import 包仍然不会报错,而在python2中,包下一定要有该文件,否则import 包报错
-
创建包的目的不是为了运行,而是被导入使用,记住,包只是模块的一种形式而已,包的本质就是一种模块
2、为何要使用包
包的本质就是一个文件夹,那么文件夹唯一的功能就是将文件组织起来 随着功能越写越多,我们无法将所以功能都放到一个文件中,于是我们使用模块去组织功能,而随着模块越来越多,我们就需要用文件夹将模块文件组织起来,以此来提高程序的结构性和可维护性
3、注意事项
1.关于包相关的导入语句也分为import和from … import …两种,但是无论哪种,无论在什么位置,在导入时都必须遵循一个原则:凡是在导入时带点的,点的左边都必须是一个包,否则非法。可以带有一连串的点,如item.subitem.subsubitem,但都必须遵循这个原则。但对于导入后,在使用时就没有这种限制了,点的左边可以是包,模块,函数,类(它们都可以用点的方式调用自己的属性)。
2、import导入文件时,产生名称空间中的名字来源于文件,import 包,产生的名称空间的名字同样来源于文件,即包下的__init__.py,导入包本质就是在导入该文件
3、包A和包B下有同名模块也不会冲突,如A.a与B.a来自俩个命名空间
"""
包
方式1:import 包名模块名
方式2: from 包名.模块名 import 功能
方式3:from 模块名 import 功能
"""
# 方式1:import 包名模块名
# 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))