python基础学习之函数进阶【匿名函数、作用域关系、闭包、递归】
匿名函数
lambda的用法:
lambda x:x+1
解释,同等于以下函数
def test(x):
return x+1
因为没有函数名,所以称为匿名函数
只适用于简易的逻辑,复杂逻辑无法实现
lambda一般是嵌套在其他内容中,只是为了简化代码
函数作用域
理解全局变量和局部变量的概念
全局变量,定义的变量无缩进,即在代码层最外围;
局部变量,定义的变量有缩进,属于某个代码块中。
全局变量:
a = 1
def test():
print(a) #结果为1
print(a) #结果为1
局部变量:
def test():
a = 1
print(a) #结果为1
print(a) #报错,找不到a变量
○上一级作用域范围内无法调取下一级作用域的变量
因为函数运行结束后,被释放掉了,其中所有内容都不存在了
全局变量和局部变量的关系
a = 1
def test():
a = 2
print(a) #结果a = 2
print(a) #结果a = 1
函数内部的重新定义同名局部变量,不会影响全局变量,函数输出的时候,会现在当前作用域寻找改变了,找不到,就去上一级去找,再找不到,再去上一级,直到全局作用域。
如果在函数内需要对变量进行操作,比如加1减1之类,必须在当前作用域定义,或者申明【global】和【nonlocal】
global:在该作用域内申明该变量为全局变量,出现对该变量的操作,即为对全局变量的操作,改变后,同步改变全局变量(因为,你没有新定义变量,如果你是新定义的,就改变你定义的,不改变全局)
nonlocal:在该作用域内申明该变量为局部变量,在嵌套体系内寻找上一层的局部变量
如果什么都不写,会自动返回寻找上一层的该变量,如果上一层没有,就再往上一层找。
闭包
闭包是函数里面嵌套函数,外层函数返回里层函数,这种情况称之为闭包
【个人理解为,嵌套函数中,外层函数返回内层函数名,可以将变量在第一层做修改后,放入下一层去运行】
def fun(a):
a = a + 1
def func(x):
print(a**x)
return func
fun(1)(2) #结果为4递归
递归就是函数在结尾自己 调用自己
def calc(x)
print(x)
calc(x) #无脑循环
递归原则,其作用范围应该是越来越小,即他有个结尾,不然无脑循环肯定报错
回调
回调就是函数之间调用的一种情况
s = int(input('请输入有效值'))
def fun1():
print('人间至帅--疏楼龙宿')
def fun(x,y):
if y > 1:
x()
else:
print("出错了")
fun(fun1,s)即在该函数中,fun1函数被传入fun函数中,通过判断后其他条件来决定是否运行该函数,按照函数的规则一步步运行即可
python基础学习之函数进阶【匿名函数、作用域关系、闭包、递归】的更多相关文章
- python 基础学习笔记(6)--函数(2)
...
- Python基础学习笔记(十一)函数、模块与包
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-functions.html 3. http://www.liao ...
- Python基础-列表推导式、匿名函数、os/sys/time/datetime/pymysql/xlwt/hashlib模块
列表推导式 [表达式 for 变量 in range(n) if 条件] 等效于 for 变量 in in range(n): if 条件: 表达式 优点:书写方便,缺点:不易读 注意:用的是方括号 ...
- python基础之函数式编程、匿名函数、内置函数
一 函数式编程 不修改外部状态. 模仿数学里得函数进行编程. 用函数编程写出得代码相当精简. 可读性比较差. 例子: y=2*x+1 x=1 def test(x): return 2*x+1 tes ...
- python 基础学习笔记(6)--函数(1)
## **函数(1)** **函数的定义:** 1. [ ] 小时候大家应该都玩过乐高积木,只要通过想象和创意,可以用它怕拼凑出很多神奇的东西.随着学习的深入,编写的代码日益增加并且越来越复杂,所以需 ...
- python基础学习1-类相关内置函数
#!/usr/bin/env python # -*- coding:utf-8 -*- #===issubclass(class,classinfo) 检查class是否是classinfo类的子类 ...
- Python基础学习笔记,进阶学习笔记 出处
参考 虫师-博客 http://www.cnblogs.com/fnng/category 随笔分类相关文章
- Python基础学习四
Python基础学习四 1.内置函数 help()函数:用于查看内置函数的用途. help(abs) isinstance()函数:用于判断变量类型. isinstance(x,(int,float) ...
- python基础学习Day14 内置函数 匿名函数
一.内置函数里几个高频重要函数 (1)min\max函数的用法 以min函数的为例: min:返回可迭代对象的最小值(可加key,key为函数名,通过函数的规则,返回最小值). l1 =[(,),(, ...
- python函数式编程之返回函数、匿名函数、装饰器、偏函数学习
python函数式编程之返回函数 高阶函数处理可以接受函数作为参数外,还可以把函数作为结果值返回. 函数作为返回值 def laxy_sum(*args): def sum(): ax = 0; fo ...
随机推荐
- ArcGIS Mobile 自定义图层在绘制面时节点未绘制完全的问题
ArcGIS Mobile 自定义图层在绘制面时节点未绘制完全,如下图: 面的绘制代码如下: public void Draw(Display dis, Pen p1, Pen p2,Pen p3 , ...
- Jenkins管理员密码忘记修改操作
一.Jenkins管理员密码忘记 当jenkins忘记了管理用户的密码时,只能通过修改配置文件并重启的方式初始化设置用户名及密码,操作如下: [root@localhost jenkins]# vim ...
- Qt开发Activex笔记(一):环境搭建、基础开发流程和演示Demo
前言 使用C#开发动画,绘图性能跟不上,更换方案使用Qt开发Qt的控件制作成OCX以供C#调用,而activex则是ocx的更高级形式. QtCreator是没有Active控件项目的,所有需要 ...
- MSE,RMSE
MSE: Mean Squared Error 均方误差是指参数估计值与参数真值之差平方的期望值; MSE可以评价数据的变化程度,MSE的值越小,说明预测模型描述实验数据具有更好的精确度. RMSE ...
- HLOD System
1.1 HLOD System简介 首先,HLOD System主要的目标是为了减少Draw Call.然后,进行更多的Batch批处理,从而大大提高渲染性能,减少面数和纹理,这样我们相应地节省了内存 ...
- 如何通过 terminal 查看一个文件的 meta信息
如何通过 terminal 查看一个文件的 meta 信息 Linux shell stat 查看文件 meta 信息 stat stat指令:文件/文件系统的详细信息显示: 使用格式:stat 文件 ...
- how to disabled alert function in javascript
how to disabled alert function in javascript alert 阻塞主线程 default alert; // ƒ alert() { [native code] ...
- js function arguments types
js function arguments types https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functi ...
- 超强嘉宾阵容——NGK Global启动大会圆满举办
近日,由星盟全球投资公司.灵石团队联合主办的NGK Global全球生态启动大会圆满开幕.大会汇集区块链领域.金融领域.密码学领域.智能算法领域等众多大咖,和NGK Global全球价值共识者共聚一堂 ...
- 16_MySQL聚合函数的使用(重点,建议大家多动手操作)
本节所涉及的SQL语句 -- 聚合函数 SELECT AVG(sal+IFNULL(comm,0)) AS avg FROM t_emp; -- SUM SELECT SUM(sal) FROM t_ ...