函数嵌套
内部函数整个函数体都在外部函数的作用域;如果在外部没有对这个函数的引用,那么除了在函数体内,任何地方都不能调用这个函数
python
def func1():
print('1')
def func2():
print('2')
如果我们想使用函数内部定义的func2()
,可以采用前项声明的方式
python
def func2():
pass
def func1():
print('1')
global func #声明局部函数为全局函数对象
def func2():
print('2')
匿名函数
- 匿名函数 (lambda表达式):
- 除了def语句之外,我们还可以使用lambda表达式创建函数
- 这样创建出来的函数,需要额外使用变量名保存
- 匿名函数 一般用来创建简单 函数,或制作跳转表
语法格式:
python
lambda x1,x2,x3... : exper
参数可以有多个,返回值为冒号后面表达式所返回的结果
python
>>> f = lambda x,y : x+y
>>> f(1,2)
3
缺省参数 也可以在lambda
中使用;注意缺省参数定义顺序
python
>>> f = lambda x,y=1 : x+y
>>> f(10)
11
>>> f = lambda x=1,y : x+y #缺省参数定义顺序一定是从右向左
File "<stdin>", line 1
SyntaxError: non-default argument follows default argument
跳转表
- 跳转表 (jump table):函数方法的列表 或字典,能够按照需要执行相应的动作
python
L = [ lambda x:x*2 , lambda x:x*3 , lambda x:x*4] #含有三个lambda函数的列表
for f in L:
print(f(2))