python学习---dayday6

1、异常

1、捕获异常

基本语法:

try:

可能发生错误的代码

except:

如果出现异常执行的代码

2、捕获指定异常

基本语法:

try:

print(name)

except NameError as e:

print('name变量名称未定义错误')

print(e) # 将异常的内容打印输出在控制台

1、尝试执行的代码异常类型和要捕获的异常类型不一致,会无法捕获异常

2、一般try下方只放一行尝试执行的代码

3、捕获多个异常

基本语法:

try:

1 / 0

print(name)

except (NameError, zeroDivisionError)as e:

print('name变量名称未定义错误')

4、捕获全部异常

基本语法:

try:

可能发生错误的代码

except Exception as e:

如果出现异常执行的代码

5、异常的else

基本语法:

try:

可能发生错误的代码

except Exception as e:

如果出现异常执行的代码

else:

没有异常执行的代码

6、异常的finally

基本语法:

try:

可能发生错误的代码

except Exception as e:

如果出现异常执行的代码

else:

没有异常执行的代码

finally:

不管有没有异常都要执行的代码

7、异常的传递

python 复制代码
def func1():
    print("func1 begin")
    num = 1 / 0
    print("func1 over")

def func2():
    print("func2 begin")
    func1()
    print("func2 over")

def main():
    try:
        func2()
    except Exception as e:
        print(f"ERRPR:{e}")

main()

func1出现异常,函数调用,有传递,可以直接对func2函数进行捕获异常

2、模块

1、模块的导入

基本语法:

import 模块名

import 模块名1, 模块名2

模块名.功能名()

**from 模块名** \]**import \[模块 \| 类 \| 变量 \| 函数 \| \* \] \[as 别名\]** **常用组合形式:** **import 模块名** **from 模块名 import 类、变量、方法等** **from 模块名 import \*** **import 模块名 as 别名** **from 模块名 import 功能名 as 别名**

python 复制代码
# 导入time模块中所有的方法,但需要使用模块名去引用
import time
time.sleep(5)

# 从time模块,只导入sleep方法
from time import sleep
sleep(5)

# 导入time模块中所有的方法
from time import *
sleep(5)

# as 别名     ---将time模块的引用换一个引用名
import time as t
t.sleep(5)

from time import sleep as sl
sl(5)

2、制作自定义模块

1、test.py调用my_module1.py内的test函数

python 复制代码
my_module1.py

def test(a, b):
    print(a + b)
python 复制代码
test.py

import my_module1
my_module1.test(1, 2)

from my_module1 import test
test(2, 3)

2、导入不同文件下同名的函数方法,会调用执行最下边的函数方法

python 复制代码
my_module1.py

def test(a, b):
    print(a + b)
python 复制代码
my_module2.py

def test(a, b):
    print(a - b)
python 复制代码
test.py

#不同文件下同函数名,会调用最后的函数
from my_module1 import test
from my_module2 import test
test(1, 2)

3、test.py文件只导入模块,运行也会执行my_module1.py文件内的test方法

python 复制代码
my_module1.py

def test(a, b):
    print(a + b)

# 其他文件导入这个函数,也会执行
test(5, 5)
python 复制代码
test.py

from my_module1 import test

使用main方法,可以避免这个执行结果

python 复制代码
my_module1.py

def test(a, b):
    print(a + b)


# 当前文件执行,__name__内置变量会变成__main__,if会变成true,就会执行
if __name__ == '__main__':
    test(5, 5)

4、使用_ all _变量

python 复制代码
my_module1.py

# 针对* 只能导入test_A 这个函数方法
__all__ = ['test_A']

def test_A(a, b):
    print(a + b)

def test_B(a, b):
    print(a - b)
python 复制代码
test.py

from my_module1 import *
test_A(8, 4)
test_B(5, 1)

# 使用__all__变量,针对(导入*),只能导入all指定的函数方法
from my_module1 import *
from my_module1 import test_B
test_A(8, 4)
test_B(5, 1)

3、python包

导入包-方式一:

import 包名.模块名

包名.模块名.目标

使用python package创建包,会自动生成一个__init__.py的文件

python 复制代码
my_module1.py

def info_print1():
    print("1111111")
python 复制代码
my_module2.py

def info_print2():
    print("222222")
python 复制代码
test.py

# -------方式1 导入--------
# import my_package.my_module1
# import my_package.my_module2
# my_package.my_module1.info_print1()
# my_package.my_module2.info_print2()

# -------方式2 导入--------
# from my_package import my_module1
# from my_package import my_module2
# my_module1.info_print1()
# my_module2.info_print2()

# -------方式3 导入--------
# from my_package.my_module1 import info_print1
# from my_package.my_module2 import info_print2
# info_print1()
# info_print2()

# -------all变量--------
from my_package import *
my_module1.info_print1()
my_module2.info_print2()
python 复制代码
__init__.py

__all__ = ['my_module1']

4、案例

1、创建 my_utils 包,创建 str_util.py 和 file_util.py 文件,使用 test.py 调用执行

2、str_util.py 内创建 str_reverse(s) 和 substr(s, x, y) 函数

1、str_reverse(s) 函数,接收传入字符串,将字符串反转返回

s[::-1] 从第几个到第几个开始,-1从后往前

2、substr(s, x, y) 函数,按照下标x和y,对字符串进行切片

s[x, y] 从x下标到y小标开始切片(不包含y)

3、file_util.py 内创建 print_file_info(file_name) 和 append_to_file(file_name, data) 函数

1、print_file_info(file_name) 函数,接收传入文件的路径,打印文件的全部内容

2、append_to_file(file_name, data) 函数,接受文件路径以及传入的数据,将数据追加写入到文件中

4、使用 test.py 文件,导入调用函数

python 复制代码
str_util.py

# 字符串相关工具

# 接收传入字符串
def str_reverse(s):
    """
    将字符串反转返回
    :param s: 将被反转的字符串
    :return: 反转后的字符串
    """
    return s[::-1]


def substr(s, x, y):
    """
    按照下标x和y,对字符串进行切片
    :param s: 即将被切片的字符串
    :param x: 切片的开始下标
    :param y: 切片的结束下标
    :return: 切片完成后的字符串
    """
    return s[x:y]

if __name__ == '__main__':
    print(str_reverse("你好世界"))
    print(substr("python",1,3))
python 复制代码
file_util.py

# 文件处理相关工具

# 如文件不存在则捕获异常,输出提示信息,通过finally关闭文件对象
def print_file_info(file_name):
    """
    接收传入文件的路径,打印文件的全部内容
    :param file_name: 即将读取的文件路径
    :return: None
    """
    f = None
    try:
        f = open(file_name, "r", encoding="UTF-8")
        content = f.read()
        print("内容如下:")
        print(content)
    except Exception as e:
        print(f"ERROR:{e}")
    finally:
        if f:   # 如果变量是None,表示False,如果有内容就是True
            f.close()


def append_to_file(file_name, data):
    """
    接收文件路径以及传入数据,将数据追加写入到文件中
    :param file_name: 指定的文件路径
    :param data: 指定的数据
    :return: None
    """
    f = open(file_name, "a", encoding="UTF-8")
    f.write(data)
    f.write("\n")
    f.close()


if __name__ == '__main__':
    print_file_info("F:\\test.txt")
    append_to_file("F:\\test.txt", "你好世界!!!")
python 复制代码
test.py

from my_utils.str_util import *
from my_utils.file_util import *

print(str_reverse("你好世界"))
print(substr("python", 0, 4))

append_to_file("F:\\test.txt", "你好世界!!!")
print_file_info("F:\\test.txt")
相关推荐
盐焗西兰花5 小时前
鸿蒙学习实战之路-Reader Kit修改翻页方式字体大小及行间距最佳实践
学习·华为·harmonyos
QiZhang | UESTC5 小时前
学习日记day76
学习
久邦科技5 小时前
20个免费电子书下载网站,实现电子书自由(2025持续更新)
学习
喵手5 小时前
Python爬虫实战:旅游数据采集实战 - 携程&去哪儿酒店机票价格监控完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集结果csv导出·旅游数据采集·携程/去哪儿酒店机票价格监控
2501_944934735 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
Gain_chance5 小时前
34-学习笔记尚硅谷数仓搭建-DWS层最近一日汇总表建表语句汇总
数据仓库·hive·笔记·学习·datagrip
helloworldandy6 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
Gain_chance7 小时前
36-学习笔记尚硅谷数仓搭建-DWS层数据装载脚本
大数据·数据仓库·笔记·学习
肖永威7 小时前
macOS环境安装/卸载python实践笔记
笔记·python·macos
XH华7 小时前
备战蓝桥杯,第九章:结构体和类
学习·蓝桥杯