装饰器示例代码 def 外func( 被装饰func) : """ 这是一个装饰器示例,展示如何使用中文命名函数和变量。 被装饰func: 这是将被装饰的函数 """ def 内func( * args, ** kwargs) : """ 内func 的 Docstring :param args: 一个星号 * 收集位置参数 :param kwargs: 两个星号 ** 收集关键字参数 """ print ( "开始装饰器功能" ) result= 被装饰func( * args, ** kwargs) print ( "结束装饰器功能" ) return resultreturn 内func装饰器应用示例 def outer_func( func) : def inner_func( *args, **kwargs) : print( "内函数执行前代码" ) result= func( *args, **kwargs) print( "内函数执行后代码" ) return resultreturn inner_func @outer_func def send_email( 邮箱地址, 主题, 邮件内容) : print( f"Sending email to: {邮箱地址}" ) print( f"Subject: {主题}" ) print( f"Body: {邮件内容}" ) if __name__== "__main__" : send_email( "test@test.com" ,"测试主题" ,"测试邮件内容." )
实战应用示例 def ssh_D( exec_select_sql_func) :"" " 用来在SSH隧道中执行SELECT SQL语句的装饰器 exec_select_sql_func: 查询sql的函数"" " def wrapper( *args, **kwargs) :"" " wrapper 的 Docstring :param args: 一个星号 * 收集位置参数 :param kwargs: 两个星号 ** 收集关键字参数"" " print( "1. 建立SSH隧道连接,并建立动态端口转发" ) print( "2. 切换全局socket到SSH隧道的动态端口" ) result= exec_select_sql_func( *args, **kwargs) print( "4. 关闭SSH隧道连接" ) return resultreturn wrapper @ssh_D def execute_select_sql( sql_query) :"" " 执行SELECT SQL语句的函数 sql_query: 要执行的SQL查询语句"" " print( f"3. 内函数 执行SQL查询: {sql_query}" ) # 模拟查询结果 return [ "结果1" ,"结果2" ,"结果3" ] if __name__== "__main__" : sql= "SELECT * FROM users WHERE age > 30;" results= execute_select_sql( sql) print( "查询结果:" , results)