美文网首页
用故事说明回调函数

用故事说明回调函数

作者: 一百万个不确定 | 来源:发表于2019-06-26 19:12 被阅读0次

    君君城里面的铁匠小詹詹技术非凡,很多人找他去打造剑。一天小猎狗去找小詹詹打造一把剑。

    小詹詹问:“小猎狗,有什么具体的要求么?”

    小猎狗:“Fuck the 要求,给我打造一把顺手的剑就好了。”

    小詹詹说:“好的,我现在就去弄。”

    在这里小猎狗给了小詹詹1个参数:顺手。没有别的要求,所以把小詹詹的锻造比作函数的话,小猎狗就是调用了一个带有1个参数的函数。

    结果就是小詹詹给了猎狗一把顺手的剑

    但是有一天,阿雅去找小詹詹打造匕首:“小詹詹,做个匕首,不然晚上不给你营养快线。”

    小詹詹说:“好的,阿雅,有什么具体要求么?”

    阿雅顺手给了他一把图鉴,图鉴里面的锻造方法小詹詹从未见过。

    小詹詹咽了口气,说“好的!”

    在这里阿雅给你图鉴就是一个回调函数,这个回调函数小詹詹提前不知道,利用图鉴和小詹詹的技术才能共同把这个锻造任务完成。

    小詹詹完成了这个匕首之后,阿雅用它刺杀了夜王。

    下面用代码说明这个过程

    class BlackSmith(object):
        def __init__(self, name):
            self.name = name
    
        def produce_default(self, para):
            result = ''
            if 'nice' in para:
                result += 'nice'
            if '顺手' in para:
                result += '顺手'
            return result + '剑'
    
        def make_weapon(self, para, method=None):
            if method:
                return method(para)
            else:
                return self.produce_default(para)
    
    
    def produce_specific_weapon(para):
        return para+'一把可以刺杀夜王的匕首'
    
    
    class People(object):
        def __init__(self, name, method):
            self.name = name
            self.method = method
            self.weapon = ''
    
    
    if __name__ == "__main__":
        # 定义一个铁匠
        gendry = BlackSmith('Gendry')
    
        # 小猎狗去找铁匠打造一把普通的剑
        hound = People('Hound', None)
        hound.weapon = gendry.make_weapon('顺手')
        print('小猎狗的武器是', hound.weapon)
    
        # 阿雅去找铁匠打造一把特别的武器
        aya = People('Aya', produce_specific_weapon)
        aya.weapon = gendry.make_weapon('阿雅专用', aya.method)
        print('阿雅的武器是', aya.weapon)
    

    代码的输出结果为:

    小猎狗的武器是 顺手剑
    阿雅的武器是 阿雅专用一把可以刺杀夜王的匕首
    

    相关文章

      网友评论

          本文标题:用故事说明回调函数

          本文链接:https://www.haomeiwen.com/subject/dtyhcctx.html