进击の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=" ")

自己执行打印吧!


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

~~函数基础(三):嵌套函数&匿名函数~~的更多相关文章

  1. Python之路-函数基础&局部变量与全局变量&匿名函数&递归函数&高阶函数

    一.函数的定义与调用 函数:组织好的.可重复使用的.用户实现单一或者关联功能的代码段.函数能够提高应用的模块性和代码的重复利用率.Python提供了很多内置的函数,比如len等等,另外也可以根据自己的 ...

  2. python函数3-函数嵌套/递归/匿名函数

    2 .函数递归: 3.匿名函数

  3. js闭包(函数内部嵌套一个匿名函数:这个匿名函数可将所在函数的局部变量常驻内存)

    js闭包(函数内部嵌套一个匿名函数:这个匿名函数可将所在函数的局部变量常驻内存) 一.总结 1.闭包:就是在一个函数内部嵌套一个匿名函数,这个匿名函数可以访问这个函数的变量. 二.要点 闭包 闭包的相 ...

  4. 洗礼灵魂,修炼python(25)--自定义函数(6)—从匿名函数进阶话题讲解中解析“函数式编程”

    匿名函数进阶 前一章已经说了匿名函数,匿名函数还可以和其他内置函数结合使用 1.map map():映射器,映射 list(map(lambda x:x*2,range(10))) #把range产生 ...

  5. js循环函数中的匿名函数和闭包问题(匿名函数要用循环中变量的问题)

    js循环函数中的匿名函数和闭包问题(匿名函数要用循环中变量的问题) 一.总结 需要好好看下面代码 本质是因为匿名函数用到了循环中的变量,而普通方式访问的话,匿名函数的访问在循环之后,所以得到的i是循环 ...

  6. python函数基础:嵌套函数、作用域、匿名函数、高阶函数、递归函数

    嵌套函数: 1. 函数内部可以再定义函数 2. 函数只有被调用之后才会执行 看如下代码: age = 18 def func1(): age = 22 print(age) def func2(): ...

  7. Py修行路 python基础 (十三)匿名函数 与 内置函数

    一.匿名函数  1.定义: 匿名函数顾名思义就是指:是指一类无需定义标识符(函数名)的函数或子程序. 2.语法格式:lambda 参数:表达式 lambda语句中,开头先写关键字lambda,冒号前是 ...

  8. Python3基础(4)匿名函数、装饰器、生成器、迭代器、内置函数、json&pickle序列化、软件目录开发规范、不同目录间模块调用

    ---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ 1 ...

  9. python基础-4 函数参数引用、lambda 匿名函数、内置函数、处理文件

    上节课总结 1.三元运算 name=“name1”if 条件 else “name2” 2.深浅拷贝 数字.字符串 深浅,都一样 2.其他 浅拷贝:只拷贝第一层 深拷贝:不拷贝最后一层 3.set集合 ...

  10. go语言基础之defer和匿名函数结合使用

    1.匿名函数结合使用 示例1: package main //必须 import "fmt" func main() { a := 10 b := 20 defer func() ...

随机推荐

  1. Windows 10开发基础——启动默认应用的URI

    主要内容:通过指定的URI来启动默认的应用(设置,应用商店,地图,人脉) 方法一:直接在XAML中添加如下代码 <TextBlock x:Name="LocationDisabledM ...

  2. Win8Metro(C#)数字图像处理--2.8图像线性变换

    原文:Win8Metro(C#)数字图像处理--2.8图像线性变换  2.8图像线性变换 [函数名称] 图像线性变换函数LinearTransformProcess(WriteableBitmap ...

  3. VS2015设置VS2017的“快速操作”快捷键Alt+Enter

    选项 -  环境 - 键盘 - 视图.快速操作和重构 添加“Alt+Enter (文本编辑器)”

  4. Android零基础入门第54节:视图切换组件ViewSwitcher

    原文:Android零基础入门第54节:视图切换组件ViewSwitcher 前面三期学习了ProgressBar系列组件,那本期开始一起来学习ViewAnimator组件. 一.ViewAnimat ...

  5. Android零基础入门第60节:日历视图CalendarView和定时器Chronometer

    原文:Android零基础入门第60节:日历视图CalendarView和定时器Chronometer 上一期学习了AnalogClock.DigitalClock和TextClock时钟组件,本期继 ...

  6. Android零基础入门第70节:ViewPager轻松完成TabHost效果

    上一期学习了ViewPager的简单使用,本期一起来学习ViewPager的更多用法. 相信很多同学都使用过今日头条APP吧,一打开主界面就可以看到顶部有很多Tab,然后通过左右滑动来切换,就可以通过 ...

  7. SQL介绍及MySql的安装

    数据库及SQL概念 数据库是按照数据结构存储和组织数据的仓库 结构化查询语言(Structured Query Language)简称SQL MySql:DBMS MySql安装 安装MySql服务端 ...

  8. SharePoint js操作原生的New/Edit表单

    列表的表单,有个类似的需求:在New需隐藏特定字段,Edit时显示. 默认是New/Edit表单的字段是一样,就算在Content type 是隐藏也是同时影响两个表单.   如何做到仅仅在New时隐 ...

  9. Delphi 7下IGDIPlus库的使用

    IGDI+是一个免费开源封装微软GDI+功能的Delphi库,该库使得可以用Delphi语言代码快速简短的实现复杂GDI+应用程序.官方网站:http://www.mitov.com/html/igd ...

  10. CentOS7中firewalld的安装与使用详解

    一.软件环境 [root@Geeklp201 ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) 二.安装firewall ...