69

tech2022-08-05  155

69.嵌套函数(内部函数)(闭包前奏)

嵌套函数:

   在函数内部定义的函数!

【操作】嵌套函数定义

def f1(): print('f1 running...') def f2(): print('f2 running...') f2() f1()

执行结果:

f1 running... f2 running...

小示例

def outer(): print('outer running') # (f2 只为 f1 服务,或者叫做outer和inner 内部产生的内部使用) def inner01(): print('inner running') inner01() # 返回 none print(outer()) # 因为 没有return 所以 返回都是 None

上面程序中,f2就是定义在f1 函数内部的函数。f2的定义和调用都在 f1函数内部。

一般在什么情况下使用嵌套函数?

封装 - 数据隐藏 外部无法访问“嵌套函数”。贯彻 DRY(Don’t Repeat Yourself) 原则 嵌套函数,可以让我们在函数内部避免重复代码。闭包 后面会详细讲解。

【操作】使用嵌套函数避免重复代码

代码1

# 普通方法 def printChineseName(name,familyName): print("{0} {1}".format(familyName,name)) def printEnglishName(name,familyName): print("{0} {1}".format(name, familyName)) # 以下是上面两个函数 嵌套函数的 用法 #使用 1 个函数代替上面的两个函数 def printName(isChinese,name,familyName): def inner_print(a,b): print("{0} {1}".format(a,b)) if isChinese: inner_print(familyName,name) else: inner_print(name,familyName) printName(True,"小七","高") printName(False,"George","Bush")

虽然这个例子 好像 普通写法 代码少一点。

但这是因为 我们的函数功能简单。

如果这个函数代码量比价多 那么 。 是不是 这样写 比较好呢?

函数只写 一遍 。 但是调用方式不一样。

普通方式 函数写了两遍 。

最新回复(0)