嵌套函数
概念:在函数内部定义的函数
嵌套函数可以用于1、封装:用于数据隐藏,外部无法访问嵌套函数
2、贯彻DRY(Don't repeat Yourself)原则:避免重复代码
3、闭包。
[Python] 纯文本查看 复制代码 def f1():
print('f1 running')
def f2():
print('f2 running')
f2()
f1()
运行结果为:f1 running
f2 running
这是一个简单的嵌套函数,在f1内部定义f2,并调用f2,此时调用f1就相当于调用f1和f2两个函数。而且嵌套函数只在函数内部使用,函数外无法使用函数内的嵌套函数。否则会报错。
[Python] 纯文本查看 复制代码 #避免重复代码
def printChineseName(name,FamliyName):
print('{0} {1}'.format(FamliyName,name))
def printEnglishName(name,FamliyName):
print('{0} {1}'.format(name, FamliyName))
def printName(isChinese,name,FamliyName):
def inner_name(a,b):
print('{0} {1}'.format(a,b))
if isChinese:
inner_name(FamliyName,name)
else:
inner_name(name,FamliyName)
可以使用嵌套函数避免重复代码。
nonlocal 关键字
nonlocal与global类似
nonlocal 用来声明外部函数的局部变量
global 用来声明全局变量
[Python] 纯文本查看 复制代码 def outer():
a = 10
def inner():
nonlocal a #声明外部函数的局部变量
print('inner a:',a)
a = 20 #修改外部函数的局部变量必须先用nonlocal声明,否则会报错
inner()
print('outer a:',a)
outer()
注意如果嵌套函数内部只是读取外部函数局部变量的值,可以不用声明直接读取,如果需要修改的话,必须先用nonlocal声明。
|