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函数中,通过判断后其他条件来决定是否运行该函数,按照函数的规则一步步运行即可
最新文章
- C#时间戳转换
- js获取?后面具体参数的值
- WinForm richtextbox 关键字变红色
- html表单样式, table隔行高亮, 长字符串自动换行
- 虚拟机下samba简单安装配置
- selenium验证码处理
- XAML 概述一
- uiautomator的坑和AAPT命令方式启动一个应用程序
- sublime text3输入中文的问题.
- 【HDU 3810】 Magina (01背包,优先队列优化,并查集)
- ORA-00928: 缺失 SELECT 关键字
- 【USACO 1.4.4】母亲的牛奶
- SESSION会话技术
- Online Procurement Auctions for Resource Pooling in Client-Assisted Cloud Storage Systems---INFOCOM 2015
- Opengl4.5 中文手册—F
- [luogu4149][bzoj2599][IOI2011]Race【点分治】
- \Temporary ASP.NET Files\root\文件不断增长,如何处理?
- ARM Linux中断发生时内核堆栈切换
- python MySQL-Slave从服务器状态检测脚本
- JAVA 关于JNI本地库加载
热门文章
- javascript questions &; code review
- 网站备案查询/ICP备案查询网
- js var &; let &; const All In One
- linux bash shell &; lsof &; grep &; ps
- Flutter 模拟youtube快进icon
- 「NGK每日快讯」2021.2.1日NGK公链第90期官方快讯!
- 🎊 Element UI 新春快报
- mui调用本地相册调用相机上传照片
- iframe 调用父页面元素
- Linux-基础命令学习