首页 > 编程语言 > 详细

python基础之装饰器

时间:2017-03-06 13:33:20      阅读:164      评论:0      收藏:0      [点我收藏+]

一、知识准备

1、对象

python里一切皆对象,是一门面向对象的语言,没有java那么严格。函数也可以作为对象,作为参数传递。写得太烂,请参考下方的博客吧

#__Author: "Skiler Hao"
#date: 2017/3/5 11:01


def speak_chinese():
    """说中文"""
    print("你好!")


def speak_english():
    """说英语"""
    print("hello!")


def greet(say):
    """调用说话方式,问候一下"""
    print(say)
    say()

greet(speak_chinese)
greet(speak_english)

2、对函数进行装饰

既然函数能当做参数传递,传递过去还能够运行,那么我们就可以对传递进去的函数做一些装饰,额外补充一些功能

def speak_chinese():
    """说中文"""
    print("你好!")


def speak_english():
    """说英语"""
    print("hello!")


def greet(say):
    """对传过来的函数做一个简单装饰,都加上接下来是问候这句话"""
    print(‘接下来是问候!‘)
    say()

来一些复杂的装饰

def conn_db():
    """连接数据库"""
    print("连接数据库中。。。")


def close_db():
    """关闭数据库"""
    print("关闭数据库。。。")


def operation1():
    """某些数据库操作"""
    print("数据库操作1。。。")


def operation2():
    """某些数据库操作"""
    print("数据库操作2。。。")


def db_wrapper(operation):

    conn_db()
    operation()
    close_db()

if __name__ == ‘__main__‘:
    db_wrapper(operation1)

3、改动

我原本使用的operation1函数,但是现在使用db_wrapper(operation1)必须把函数作为参数扔到db_wrapper里,怎么办?

 

 参考博客:http://python.jobbole.com/85056/

python基础之装饰器

原文:http://www.cnblogs.com/skiler/p/6509171.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!