函数的作用域:无论在哪个地方调用函数,函数运行过程中的作用域只跟定义的时候有关,跟在哪个地方调用无关。

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)

 

posted on 2019-03-14 16:36  Manuel  阅读(136)  评论(0编辑  收藏  举报