用程序模拟生活

职场出处艰辛,但是生活充满乐趣,每个人都有自己的爱好,每个人也有直接擅长的技能。在新人见面会上把自己的技能展示出来,是让大家记住你的最好方式。

代码

  1. class Employee:
  2. """公司员工"""
  3. def __init__(self, name):
  4. self.__name = name
  5. def do_performance(self, skill):
  6. print(self.__name + "的表演:", end="")
  7. skill()
  8. def sing():
  9. """唱歌"""
  10. print("唱一首歌")
  11. def dling():
  12. """拉Ukulele"""
  13. print("弹一首UKulele曲子")
  14. def joke():
  15. """说段子"""
  16. print("说一个搞笑段子")
  17. def perform_magic_tricks():
  18. """表演魔术"""
  19. print("表演神秘魔术")
  20. def skateboarding():
  21. """玩滑板"""
  22. print("酷炫滑板")
  23. def test_skill():
  24. helen = Employee("Helen")
  25. helen.do_performance(sing)
  26. frank = Employee("Frank")
  27. frank.do_performance(dling)
  28. jacky = Employee("Jacky")
  29. jacky.do_performance(joke)
  30. chork = Employee("Chork")
  31. chork.do_performance(perform_magic_tricks)
  32. kerry = Employee("Kerry")
  33. kerry.do_performance(skateboarding)
  34. if __name__ == '__main__':
  35. test_skill()

回调机制

把函数做为参数,传递给另一个函数,延迟到另一个函数的某个时刻执行的过程叫回调。假设我们有一个函数callback(args),这个函数可以做为参数传递给另一个函数otherFun(func, args),如otherFun(callback, [1, 2, 3]),那么callback叫回调函数,otherFun叫高级函数,也叫包含(调用)函数。
回调函数本质是一种模式(一种解决常见问题的模式),或一种机制,因此回调函数的实现方式也被称为回调模式或回调机制。

设计思想

回调函数来自一种著名的编程范式—函数式编程,在函数式编程中可以指定函数做为参数。函数是Python内置支持的一种封装,我们通过把大段代码拆分成函数,再进行一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称为面向过程的程序设计,也称为函数式编程。把函数做为参数传给你另一个函数的回调机制是函数式编程的核心思想。
当我们把一个回调函数做为参数传递给另一个函数时,我们只传递了这个函数的定义,并没有在参数中执行它,而在包含函数的函数体内的某个位置被执行,就像回调函数在包含函数的函数体内被定义一样。

模型说明

设计要点

在设计回调机制的程序时要注意以下几点。
1.在支持函数式编程的语言中,可以使用回调函数实现。作为参数传递的函数称为回调函数,接收回调函数的函数称为高阶函数或包含函数。
2.在支持面向对象编程的语言中,可以使用策略模式来实现回调机制。

回调机制的优缺点

优点:
1.避免重复代码
2.增强代码的可维护性
3.有更多定制的功能
缺点:
可能出现“回调地狱”的问题,即多重的回调函数调用。如回调函数A被高阶函数B调用同时本身有是一个回调函数,被C函数调用,我们应尽量避免这种多重调用的情况,否则代码可读性很差,程序很难维护。