函数的作用域:无论在哪个地方调用函数,函数运行过程中的作用域只跟定义的时候有关,跟在哪个地方调用无关。
name='alex'
def foo():
name = 'linhaifeng'
def bar():
name = 'wupeiqi'
print(name)
return bar
a=foo()
print(a)
a()
>>><function foo.<locals>.bar at 0x00000269B6F772F0>
wupeiqi
ps:函数若不加括号直接打印,则打印的是函数在内存中的地址
def test():
print('in the test')
def test1():
print('in the test1')
return test
res=test1()
print(res())
>>>in the test1
in the test
None
匿名函数
lambda匿名函数语法结构:
变量=lambda关键字 形参:函数返回值
若不给其赋值,则与写一个数字1一样,运行到下一行代码,python编译器会自动释放掉其占用的内存
一般与其他函数连用
#匿名函数,lambda关键字 def calc(x): return x+1 res=calc(10) print(res) #上面的函数等价于下面的函数 func=lambda x:x+1 print(func(10)) >>>11 >>>11
name='alex' #name='alex_sb' def change_name(x): return x+'_sb' print(change_name(name)) v=lambda n:n+'_sb' print(v(name)) >>>alex_sb >>>alex_sb
若要返回多个值,需加括号,在普通函数中返回多个值python自动将返回值定义到元组中
f=lambda x,y,z:(x+1,y+2,z+3) print(f(1,2,3)) >>>(2, 4, 6)