20201024_083.嵌套函数(内部函数)_数据隐藏

首页 » Python » 正文

嵌套函数:指在函数内部定义的函数。

【案例】嵌套函数定义

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

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

    f2()


f1()  # 可以正常运行
f2()  # 内部函数在函数内定义,也只能在定义层或者内层调用,不能在外层调用。这里会报错

运行结果:
20201024_083.嵌套函数(内部函数)_数据隐藏

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

  1. 封装 – 数据隐藏
    使外部无法访问“嵌套函数”。
  2. 贯彻 DRY(Don’t Repeat Yourself) 原则
    嵌套函数,使功能模块化,可以让我们在使用函数时避免重复代码。
  3. 闭包
    后面会详细学习。

【案例】使用嵌套函数避免重复代码

# 写法1
def print_chinese_name(name, family_name):
    print('{} {}'.format(family_name, name))


def print_english_name(name, family_name):
    print('{} {}'.format(name, family_name))


def print_name1(name_type, name, family_name):
    if name_type == 'chinese':
        print_chinese_name(name, family_name)
    elif name_type == 'english':
        print_english_name(name, family_name)


print_name1('chinese', '小二', '熊')


# 写法2
def print_name2(name_type, name, family_name):
    def inner_print(a, b):
        print('{} {}'.format(a, b))

    if name_type == 'chinese':
        inner_print(family_name, name)
    elif name_type == 'english':
        inner_print(name, family_name)


print_name2('chinese', '小二', '熊')

显然写法2比写法1简单,而且当关联的子函数其他函数用不到时,使用嵌套的写法修改起来也方便不过多地跳换位置。
当然,这里是为了说明而说明,实现上面代码的功能有更简单的写法。

未经允许不得转载:作者:1324-易同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《20201024_083.嵌套函数(内部函数)_数据隐藏》 发布于2020-11-29

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录