Python函数作用域和匿名函数
- 匿名函数的定义
- 全局变量和局部变量的概念
- global(全局变量)和 nonlocal(局部变量)
- 闭包、递归、回调
匿名函数
匿名函数 lambda
语法规则:lambda 参数 : 表达式
lambda匿名函数的格式:冒号前是参数,可以有多个,用逗号隔开,冒号右边的为表达式
lambda返回值是一个函数的地址,也就是函数对象


函数作用域
函数内部
函数内部的变量,作用域只在函数内部,函数内部不可以直接更改函数外部的变量
global(全局变量)
函数内部如果需要改变全局变量,就需要使用global修饰变量


nonlocal(局部变量)
在函数嵌套函数的情况下,同样也有函数作用域的问题,但是python3中提供了方便,只需要使用nonlocal就可以在里层函数内部修改外部函数变量


闭包
函数里面嵌套函数,外层函数返回里层函数,这种情况称之为闭包
闭包是概念,不是某种函数类型,和递归的概念类似,就是种特殊的函数调用
闭包可以得到外层函数的局部变量,是函数内部和函数外部沟通的桥梁


递归和回调函数
递归
函数可以自身调用自身,但是使用时类似于条件循环一样,要有递归的终止条件


使用递归时,可以让代码更加简洁
但递归会占用比较多的内存,当递归次数比较多时,性能就会降低,不建议多使用递归
回调
自身是一个函数,只是被传入到另一个函数当中,供其调用
回调函数不一定会被调用,是否调用由被传入函数的内部逻辑决定


Python函数作用域和匿名函数的更多相关文章
- day16_函数作用域_匿名函数_函数式编程_map_reduce_filter_(部分)内置函数
20180729 补充部分代码 20180727 上传代码 #!/usr/bin/env python # -*- coding:utf-8 -*- # ***************** ...
- python学习-day15:函数作用域、匿名函数、函数式编程、map、filter、reduce函数、内置函数r
---恢复内容开始--- 一.全局变量与局部变量 在子程序中定义的变量称为局部变量, 在程序的一开始定义的变量称为全局变量. 全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序.当全局变量与 ...
- python学习-day16:函数作用域、匿名函数、函数式编程、map、filter、reduce函数、内置函数r
一.作用域 作用域在定义函数时就已经固定住了,不会随着调用位置的改变而改变 二.匿名函数 lambda:正常和其他函数进行配合使用.正常无需把匿名函数赋值给一个变量. f=lambda x:x*x p ...
- python_07 函数作用域、匿名函数
函数的作用域:无论在哪个地方调用函数,函数运行过程中的作用域只跟定义的时候有关,跟在哪个地方调用无关. name='alex' def foo(): name = 'linhaifeng' def b ...
- 潭州课堂25班:Ph201805201 第九课 函数作用域和匿名函数 (课堂笔记)
匿名函数: lambda obj:str(obj).isdigit 语法规则: lambda 参数:表达式 列: ma1 = map( lambda obj:'binbin','abcdef' ) ...
- 【转】javascript变量作用域、匿名函数及闭包
下面这段话为摘抄,看到网上大多数人使用的是变量在使用的时候声明而不是在顶端声明,也可能考虑到js查找变量影响性能的问题,哪里用就在哪里声明,也很好. 在Javascript中,我们在写函数的时候往往需 ...
- Python之路(第七篇)Python作用域、匿名函数、函数式编程、map函数、filter函数、reduce函数
一.作用域 return 可以返回任意值例子 def test1(): print("test1") def test(): print("test") ret ...
- Python之路Python作用域、匿名函数、函数式编程、map函数、filter函数、reduce函数
Python之路Python作用域.匿名函数.函数式编程.map函数.filter函数.reduce函数 一.作用域 return 可以返回任意值例子 def test1(): print(" ...
- python学习7—函数定义、参数、递归、作用域、匿名函数以及函数式编程
python学习7—函数定义.参数.递归.作用域.匿名函数以及函数式编程 1. 函数定义 def test(x) # discription y = 2 * x return y 返回一个值,则返回原 ...
随机推荐
- CSAPP 2-2 整数的表示和运算
目录 1 整数表示 1 整数表示 编码整数有2种方式: 一种只能表示非负数(大于0的数), 另一种能够表示负数.零和正数. (1) 整型数据类型: C和C++都支持有符号(默认)和无符号数, Java ...
- 解决vue修改路由的查询字符串(query)url不改变,页面不刷新问题
我个人猜测可能是对路由的数据检测深度不够吧,单纯修改query里面的属性是不能触发数据驱动的,因此要直接给query赋值新的对象才能驱动数据更新,做法如下 第一种 var query=JSON.par ...
- 通过官网模板轻松实现Grafana的可视化界面配置(以MySQL监控项为例)
我们知道可视化是监控的一个重要环节,所以往往我们这个环节花费大量的时间和精力.可是如果可以借鉴前辈的经验和成果,可以事半功倍.Grafana 有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编 ...
- android tween animation合集
自己写的一些tween animation动画xml文件,可用于activity切换,图片切换动画等 http://files.cnblogs.com/zj2012zy/anim.rar
- windows下切换Python运行环境。
1.首先确保你的系统里已经安装了Conda,打开命令行窗口,执行命令:conda --version 2.查看你的系统当前已有的Python环境,执行命令:conda info --envs,从图中我 ...
- Linux系统中的截图功能(类似QQ、微信、Snipaste截图功能)
作者亲笔测试Ubuntu16.04,18.04,deepin15.11桌面版本Linux内核系统. 安装: 1. 终端命令黑框 2. sudo apt-get install flameshot(体积 ...
- Centos7下安装Relion
目录 1.Virtual Box 1.1下载Virtual Box 1.2安装Virtual Box 2.Centos7 2.1下载Centos7 2.2安装Centos7 2.2.1配置虚拟机 2. ...
- 乘积量化(Product Quantization)
乘积量化 1.简介 乘积量化(PQ)算法是和VLAD算法是由法国INRIA实验室一同提出来的,为的是加快图像的检索速度,所以它是一种检索算法,在矢量量化(Vector Quantization,VQ) ...
- python 学习(day1)
初识python python的创始人为吉多*范罗苏姆(Guido van Rossum).1989年圣诞节期间,开发出来的脚本解释程序. python是⼀⻔什么样的语言 python 是一门解释型语 ...
- 《细说PHP》第四版 样章 第23章 自定义PHP接口规范 3
23.2 接口实现的基础 大家都很了解函数在本地应用,通过名称调用函数执行,并通过传递不同参数,函数有不同执行,执行后给调用者返回结果.如果把一个函数做成一个接口远程访问,也需要这几个步骤.使用HT ...