四时宝库

程序员的知识宝库

python异常、模块与包

捕获异常的作用:提前假设某处会出现异常,做好提前准备,当真的出现异常的时候,可以有后续手段。

捕获常规异常

try:

可能发生错误的代码

except:

如果出现异常执行的代码

捕获指定异常

try:

print(name)

except NameError as e:

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

捕获多个异常

try:

print(1/0)

except(NameError,ZeroDivisionError):

print("ZeroDivision错误。。。")

捕获所有异常

try:

print(1/0)

except Exception as e:

print("出现异常了")

异常else

try:

print(1)

except Exception as e:

print(e)

else:

print("我是else,是没有异常的时候执行的代码")

异常的finally

try:

f = open('test.txt','r')

except Exception as e:

f = open('test.txt','w')

else:

print("我是else,是没有异常的时候执行的代码")

finally:

f.close()

模块的导入方式

[from 模块名] import[模块|类|变量|函数|*] [as 别名]

常用的组合形式如:

  • import 模块名
  • from 模块名 import 类、变量、方法等
  • from 模块名 import *
  • import 模块名 as 别名
  • from 模块名 import 功能名 as 别名

测试模块

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

# 只有当前文件中调用该函数,
if __name__ == '__main__':
    test(1,1)

的作用:模块文件越来越多时,包可以帮助我们管理这些模块,包的作用就是包含多个模块,但包的本质依然是模块。

注意:新建包后,包内部会自动创建__init__.py"文件,这个文件控制着包的导入行为

常用的第三方包:

  • 科学计算:numpy包
  • 数据分析:pandas包
  • 大数据计算:pyspark、apache-flink包
  • 图形可视化:matplotlib、pyecharts
  • 人工智能:tensorflow

安装第三方包 pip

pip install 包名称

pip的网络优化

pip install -i
https://pypi.tuna.tsinghua.edu.cn/simple 包名称

练习案例:自定义工具包

创建一个自定义包,名称为:my_utils(我的工具)

在包内提供2个模块

str_util.py(字符串相关工具,内含:)

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

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

file_util.py(文件处理相关工具,内含:)

函数:print_file_info(file_name),接收传入文件的路径,打印文件的全部内容,如文件不存在则捕获异常,输出提示信息,通过finally关闭文件对象

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

构建出包后,尝试着用一用自己编写的工具包。

# str_util.py
# 接收传入字符串,将字符串反转返回
def str_reverse(s):
    """

    :param s:
    :return:
    """
    return s[::-1]

# 按照下标x和y,对字符串进行切片
def substr(s,x,y):
    """

    :param s:
    :param x:
    :param y:
    :return:
    """
    return s[x:y:]

if __name__ == '__main__':
    print(str_reverse("念兮暮霞如烟"))
    print(substr("念兮暮霞如烟",1,4))
# file_util.py
# 接收传入文件的路径,打印文件的全部内容,如文件不存在则捕获异常,输出提示信息,通过finally关闭文件对象
def print_file_info(file_name):
    """

    :param file_name:
    :return: None
    """
    f = None
    try:
        f = open(file_name,"r")
        content = f.read()
        print("文件的全部内容如下:")
        print(content)
    except Exception as e:
         print(e)
    finally:
        if f:
            f.close()

# 接收文件路径以及传入数据,将数据追加写入到文件中
def append_to_file(file_name,data):
    """

    :param file_name:
    :param data:
    :return: None
    """
    # 1.打开文件,通过a模式
    f = open(file_name,"a")
    # 2.文件写入
    f.write(data)
    f.write("\n")
    # 3.关闭文件内容刷新
    f.close()


if __name__ == '__main__':
    print_file_info("E:/py/bill.txt")
    append_to_file("E:/py/test_append.txt","念兮暮霞如烟")


构成的包如图所示

import my_utils.str_util
from my_utils import file_util

print(my_utils.str_util.str_reverse("念兮暮霞如烟"))
print(my_utils.str_util.substr("念兮暮霞如烟",1,4))

file_util.append_to_file("E:/py/test_append.txt","great!")
file_util.print_file_info("E:/py/test_append.txt")

调用自己写的包:


完成啦~

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接