当前位置: 首页 > news >正文

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

进击のpython


嵌套函数&匿名函数


讲完作用域之后

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

讲个稍微小进阶的东西吧

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


  • 嵌套函数

    玩过俄罗斯套娃不?

    没玩过听过不?

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

1433227-20190704182729660-987230918.png

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

函数也可以这么玩~~~

msg = "我是全局变量"


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

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

    func1()
    print(msg)
    

func()
print(msg)

1433227-20190704182746971-195822054.png

结果是这个!能看懂不?

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

1433227-20190704182805162-1644937604.png

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

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

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=" ")

    1433227-20190704182826922-79969084.png

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

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

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

    先定义函数,再调用

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

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

    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

相关文章:

  • YYImage渲染流程+源码分析
  • 我们是否应该使用 Set 来提高代码的性能
  • Nginx配置upstream实现负载均衡
  • nginx实现请求转发
  • 【模板】单源最短路径(标准版)
  • Python3 数据类型-集合
  • 居民运输问题得到根本改善
  • 集群、分布式、负载均衡区别
  • 什么是自动化测试以及环境搭建
  • HashSet的实现原理
  • DELPHI 线程类(转,自己参考,版权归原作者)
  • WCF笔记
  • IE 6下测试有scriptManager控件的页面,内存不断增长
  • elementUI 弹出框添加可自定义拖拽和拉伸功能,并处理边界问题
  • 小程序开发过程中常见问题[微信小程序、支付宝小程序]
  • .pyc 想到的一些问题
  • 【391天】每日项目总结系列128(2018.03.03)
  • 78. Subsets
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • Codepen 每日精选(2018-3-25)
  • ERLANG 网工修炼笔记 ---- UDP
  • Java深入 - 深入理解Java集合
  • JDK 6和JDK 7中的substring()方法
  • js作用域和this的理解
  • Phpstorm怎样批量删除空行?
  • python学习笔记 - ThreadLocal
  • spark本地环境的搭建到运行第一个spark程序
  • Vue ES6 Jade Scss Webpack Gulp
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 在Mac OS X上安装 Ruby运行环境
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​MySQL主从复制一致性检测
  • ​力扣解法汇总946-验证栈序列
  • !!Dom4j 学习笔记
  • #在 README.md 中生成项目目录结构
  • (4)STL算法之比较
  • (k8s中)docker netty OOM问题记录
  • (算法设计与分析)第一章算法概述-习题
  • (转) Android中ViewStub组件使用
  • .net wcf memory gates checking failed
  • .Net Web项目创建比较不错的参考文章
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • @基于大模型的旅游路线推荐方案
  • [2008][note]腔内级联拉曼发射的,二极管泵浦多频调Q laser——
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [AR]Vumark(下一代条形码)
  • [AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存
  • [C++随笔录] 红黑树
  • [DEBUG] spring boot-如何处理链接中的空格等特殊字符
  • [Django 0-1] Core.Email 模块
  • [English]英语积累本
  • [GN] Vue3.2 快速上手 ---- 核心语法2
  • [HXPCTF 2021]includer‘s revenge
  • [iOS]随机生成UUID通用唯一识别码