用故事说明回调函数

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

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

小猎狗:“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)

代码的输出结果为:

小猎狗的武器是 顺手剑
阿雅的武器是 阿雅专用一把可以刺杀夜王的匕首
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 夏末,在五台山的深山中,有一片少有人踏入的森林。林中的树木遮天蔽日,原本原本炙热的阳关都被树叶挡住,异常的凉爽。林...
    冰月光辉阅读 17,352评论 0 14
  • 古代十大兵器排名: 中国古代十大兵器排行第十名:诸葛亮——孔明扇诸葛亮乃是三国时期最伟大的军事家,神机妙算,简直是...
    晓寒深处明月人倚楼阅读 5,190评论 0 5
  • 秋天来了,秋风瑟瑟。一场秋雨,无数片红的、黄的、绿的落叶,飘飘悠悠地,从大树母亲身上落下,完成了他们一生的使命。 ...
    筱筱老师阅读 549评论 0 1
  • 罗列看着身患重病的方颖,心里像打翻了五味瓶,酸甜苦辣涌上心头,往事一幕幕的浮现在眼前。 一 “黑头发飘起来,飘起来...
    西岭布衣阅读 303评论 2 8
  • 人的适应能力真的超级强大,无论在什么环境觉得不可能的,最后都会适应。
    懒小痒阅读 216评论 0 0

友情链接更多精彩内容