首页 > 编程语言 >Python中关于finally的使用场景

Python中关于finally的使用场景

时间:2024-04-10 21:23:22浏览次数:15  
标签:... 场景 socket Python try finally 确保 关闭

finally关键字在Python中用于定义一个代码块,该代码块在try-except结构中无论是否发生异常,或者在try块中执行了returnbreakcontinue等控制流语句,都会被执行。finally子句提供了确保某些清理操作(如释放资源、关闭文件、断开连接等)始终执行的一种机制,即使程序在处理过程中遭遇异常或提前退出。以下是几种典型的使用finally的场景:

1. 资源清理

关闭文件

在打开文件进行读写操作后,无论操作成功与否,都需要确保文件最终被正确关闭,防止资源泄漏。

try:
    with open("example.txt", "r") as f:
        data = f.read()
        # ... 进行文件处理 ...
finally:
    f.close()  # 实际上,在with语句中,文件会在离开作用域时自动关闭,此处仅为示例说明finally的作用

数据库连接关闭

在与数据库交互时,建立的连接应确保在操作结束后关闭,避免占用过多连接资源。

import sqlite3

conn = sqlite3.connect('my_database.db')
try:
    cursor = conn.cursor()
    # ... 执行SQL查询和操作 ...
finally:
    cursor.close()
    conn.close()

2. 解锁同步原语

当使用锁、信号量等同步机制时,即使在获取锁后程序因异常中断,也需要确保最终释放锁,以避免死锁。

import threading

lock = threading.Lock()
lock.acquire()
try:
    # ... 执行临界区代码 ...
finally:
    lock.release()

3. 网络连接关闭

对于网络套接字或其他网络资源,即使通信过程中出现异常,也应当确保连接在使用完毕后被关闭。

import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('localhost', 12345))
try:
    # ... 发送和接收数据 ...
finally:
    sock.close()

4. 撤销临时状态

如果在try块中对程序或系统的某个状态进行了临时更改(如设置全局变量、修改环境配置等),finally块可以用来恢复原始状态,确保程序的后续行为不受影响。

original_value = config.get('some_setting')
try:
    config.set('some_setting', new_value)
    # ... 使用新配置执行任务 ...
finally:
    config.set('some_setting', original_value)  # 恢复原始配置

5. 确保日志记录或通知

即使程序因异常终止,也可以使用finally来确保关键的调试信息被记录,或者向管理员发送异常通知。

try:
    # ... 执行可能抛出异常的代码 ...
except Exception as e:
    log.error("An error occurred:", exc_info=True)
    send_admin_alert(e)
finally:
    log.info("Execution completed.")

总之,finally语句块在Python中主要应用于实现可靠的资源管理确保必要清理动作的执行,无论程序执行路径如何,都能保证这部分逻辑得到执行,增强了程序的健壮性和可维护性。

标签:...,场景,socket,Python,try,finally,确保,关闭
From: https://www.cnblogs.com/1034009199ruby/p/18127477

相关文章

  • python八大数据类型及方法
    【1】学习变量的目的学习变量有助于我们在程序中存储和操作数据,提高代码的灵活性和可维护性。通过使用变量,我们可以方便地引用和修改数据,使得程序能够动态地响应不同的输入和条件。【2】学习基本数据类型的目的学习基本数据类型有助于我们理解不同类型的数据在计算机中的表......
  • 视频处理的利器,ffmpeg-python库详解与应用示例
    左手编程,右手年华。大家好,我是一点,关注我,带你走入编程的世界。公众号:一点sir,关注领取python编程资料在数字媒体的时代,视频处理成为了一项重要的技能。无论是剪辑、转码、还是添加特效,都需要强大的工具来处理视频素材。Python作为一门功能强大的编程语言,在视频处理领域也有着广......
  • python初学者笔记(7)——求和函数总结
    python经常要用到各种求和,例如列表求和,元素求和,利用函数求和,将这些方法总结发给大家!1.python两个数的求和函数defsum_2_num(num1,num2):result=num1+num2returnresult#必须在执行行输入,函数命名后必须调用,调用sum_2_num(),或者print()#sum_2_num(10,20......
  • python学习之:数据类型
    大纲:一、列表list的定义语法1、""""演示数据类型:list列表语法:变量=[元素1,元素2,元素3,......]"""#定义一个列表listname_list=['itheima','itcast','python']print(name_list)print(type(name_list))#定义一个嵌套的列表statis......
  • python函数 学习第二部分
    函数大纲:六、函数说明文档#定义函数,进行文档说明defadd(x,y):"""函数说明:paramx:参数x表示其中一个加数:paramy:参数y表示另一个加数:return:返回两数相加的结果"""result=x+yreturnresultr=add(5,6)print(r)......
  • Python复习题
    第1章Python概述【填空题】Python是一种代表(简单主义)思想的语言,同时也是一门面向对象的高级语言。【填空题】Python采用强制缩进的方式使得代码具有极佳的(可读性)。【填空题】Python源代码不需要编译成(二进制码),它可以直接使用源代码运行程序。运行时会被解释器......
  • Python 更新 为什么要更新 Python? 如何更新 Python? 更新 Python 可能遇到的问题——《
    Python更新为什么要更新Python?如何更新Python?更新Python可能遇到的问题——《跟老吕学Python编程》附录资料Python更新为什么要更新Python?如何更新Python?更新Python可能遇到的问题总结Python更新最近的一次Python更新中,最引人瞩目的变化之一......
  • 最好用的Python IDE,pycharm保姆级安装教程
    简介由于Python语法简单容易入门,并且Python在办公自动化等领域的功能非常强大,所以现在越来越多非IT行业的人也开始学起了Python,要学习和使用一门编程语言,一个好用的IDE是必不可少的,而对于Python来说,最好的IDE无疑是Pycharm。本文就给大家介绍一下如何从零到一来安装Pycharm。下......
  • python基础-数据类型、字典、集合、文件操作(打开、关闭、读写、追加等)
    前言!!!注意:本系列所写的文章全部是学习笔记,来自于观看视频的笔记记录,防止丢失。观看的视频笔记来自于:哔哩哔哩武沛齐老师的视频:​​2022Python的web开发(完整版)入门全套教程,零基础入门到项目实战​数据结构数据类型字符串列表元组集合字典整型布尔None浮点型字节类......
  • 自定义Python实用函数-返回指定目录及其子目录和指定文件扩展名的文件清单列表
    importosdefget_files(file_path,image_types_set=()):"""返回指定目录及其子目录下、指定文件扩展名的文件清单列表。若image_types_set参数为空,则返回图片文件清单列表。若image_types_set参数为['.*'],则返回所有文件清单列表。"""filenames......