首页 > 其他 > 详细

~~函数基础(三):嵌套函数&匿名函数~~

时间:2019-07-04 19:57:14      阅读:103      评论:0      收藏:0      [点我收藏+]

进击のpython


嵌套函数&匿名函数


讲完作用域之后

对变量的作用范围有大致的了解了吗?

讲个稍微小进阶的东西吧

能够帮助你更加的理解全局和局部变量


  • 嵌套函数

    玩过俄罗斯套娃不?

    没玩过听过不?

    没听过?很好!我就喜欢你这种“大人物”

技术分享图片

从小的一点一点的往大了装,一个嵌套一个

函数也可以这么玩~~~

msg = "我是全局变量"


def func():
    msg = "我是函数func的局部变量"

    def func1():
        msg = "我是函数func1的局部变量"
        print(msg)

    func1()
    print(msg)
    

func()
print(msg)

技术分享图片

结果是这个!能看懂不?

看不懂的继续看,看懂的可以跳到匿名函数了!

技术分享图片

好,程序的执行步骤来了,现在来考考你吧

如果程序变为这样呢?输出结果是什么?自己动手敲敲

msg = "我是全局变量"


def func():
    msg = "我是函数func的局部变量"

    def func1():
        # msg = "我是函数func1的局部变量"
        print(msg)

    func1()
    print(msg)


func()
print(msg)

行了,这个想明白了,就差不多了(想不明白继续想!)

谈下一话题了


  • 匿名函数

    啥叫匿名?不知道就是匿(ni 四声)名,对吧!(看,又学英语又学汉语的)

    在函数里,什么叫匿名呢?

    就是不给起名字!

    what???不给起名字???

    def ():

    这样????总觉得冥冥之中不对

    觉得不对就对了,因为这么写就不对

    先给个你熟悉的函数

    def calc(x, y):
        return x ** y
    
    
    print(calc(2, 5))

    能看明白吧,不执行了┗|`O′|┛ 嗷~~

    现在把他给整匿名了!

    那我们需要一个关键字来帮忙 lambda (都学多少关键字了?自己思考一下)

    lambda x, y: x ** y

    能看明白怎么变得不?看不明白就对比着写两遍!你就看出来了

    但是奥,有些人他就发现了问题

    我这要怎么调用???????

    还是要起个名字(所以我就觉得这个有点智障)

    func = lambda x, y: x ** y
    print(func(2, 5))

    有啥用呢?有个函数是这样的

    map(函数,可迭代对象)

    不用管什么是可迭代对象,这里可以放列表,懂吧

    这个函数的意思是把列表(可迭代对象)里的每一个值都拿出来执行一下前面的函数

    我们可以试试这个函数

    a = map(lambda x: x ** 2, [1, 2, 3, 4, 5])
    for i in a:
        print(i, end=" ")

    技术分享图片

    是吧,把列表里的每个数都进行二次方操作了

    别问为啥用循环打印,先记住!

    这样,匿名函数的稍微用途就出来了,你可以不用像原先一样

    先定义函数,再调用

    而是现写现用(依旧感觉鸡肋!)

    但是函数体只能写简单的,以及三元运算

    a = map(lambda x: x ** 2 if x < 4 else 0, [1, 2, 3, 4, 5])
    for i in a:
        print(i, end=" ")

    自己执行打印吧!


*十分鸡肋*
*可以装逼*

~~函数基础(三):嵌套函数&匿名函数~~

原文:https://www.cnblogs.com/jevious/p/11134180.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!