python的这四大函数类型得牢记(变量,引用,匿名,递归)

python的这四大函数类型得牢记(变量,引用,匿名,递归),第1张

概述四大函数类型一.局部和全局变量二.引用三.匿名函数四.递归前言作者:神的孩子都在跳舞关注我的csdn博客,更多python知识还在更新一.局部和全局变量局部变量(1)含义:就是在函数内部定义的变量(作用域仅仅局限在函数的内部)不同的函数可以定义相同的局部变量,但是各

四大函数类型一. 局部和全局变量二. 引用三. 匿名函数四. 递归
前言

作者:神的孩子都在跳舞

关注我的csdn博客,更多python知识还在更新

一. 局部和全局变量局部变量
(1)含义:就是在函数内部定义的变量(作用域仅仅局限在函数的内部)不同的函数可以定义相同的局部变量,但是各自用各自的 不会产生影响
(2)作用:为了临时的保存数据 需要在函数中定义来进行存储全局变量:可以被所有函数调用突发情况

1.当全局变量和局部变量出现重复定义的时候,程序会优先执行使用函数内部定义的变量(地头蛇)
2. 如果在函数的内部要想对全局变量进行修改的话 必须使用global 关键字进行声明
3. 对于可变类型(dict、List)来讲,全局变量要想在函数中修改的话,我们不需要用global关键字去声明的(因为对象的内存地址不会改变)

代码演示
c=3#c为全局变量,可以被所有函数调用a=2def test():    b=2#b为局部变量,只能在函数内被调用    global a#局部变量变为全局变量    a=4    print('{}'.format(a))    passdef Test2():    c=4    print('{}'.format(c))    passTest2()print(c)#c没有发生改变说明全局变量在函数中无法修改test()print(a)#a发生了改变说明声明全局变量 后才可以修改# 可变类型列表,字典 dict List,可以在函数中修改ListA=[]print(type(ListA))def demoList():    ListA.append('python')#向空列表里面添加数据    passdemoList()print(ListA)#发现输出数据了# 不可变类型str tuple number【int、float、complex】
二. 引用

在python中,值是靠引用来传递来的,可以用@H_419_96@ID()查看一个对象的引用是否相同,@H_419_96@ID是值保存在内存中那块内存地址的标识。

可变类型列表和字典:函数调用全局变量后地址不会变化

代码演示

li=[]print('原来的地址{}'.format(ID(li)))def Test(n):    li.append([1,3,'chen'])    print(ID(n))    print('内部的{}'.format(n))    passprint(ID(li))Test(li)#输出我们发现地址是一样的print('外部的变量对象{}'.format(li))#不可变类型a=1def func(x):    print('x刚开始的地址{}'.format(ID(x)))    x=2    print('x的值修改之后地址{}'.format(ID(x)))#改变类型后地址发生了变化    print(x)    pass#调用函数print('a的地址:{}'.format(ID(a)))func(a)print(a)
三. 匿名函数介绍:使用@H_419_96@lambda关键字去创建函数

没有名字的函数

匿名函数冒号后面的表达式有且只有一个

注意:是表达式,而不是语句

自带@H_419_96@return,而这个return的结果就是表达式计算后的结果缺点:lambde只能是单个表达式,不是一个代码块,lambde的设计就是为了满足简单函数的场景

仅仅能封装有限的逻辑,复杂逻辑实现不了,必须使用def来处理

代码演示
M=lambda x,y:x+yprint(M(2,3))#M相当于一个调用函数#可以使用if-else语句,三元运算Test=lambda x,y:x if x>y else y#意思就是调用x和y两个变量,如果x大于y就取x否则取yprint(Test(2,3))# 也可以单个参数使用Test=lambda x:(x**2)print(Test(10))
四. 递归简单理解:自己调用自己必须有一个明确的结束条件优点:逻辑简单、定义简单缺点:容易导致栈溢出,内存资源紧张,甚至内存泄漏下列代码是求阶乘:以循环的方式去实现
def jIEcheng(n):    result=1    for item in range(1,n+1):# range左闭右开,所以要加一        result*=item        pass    return resultprint(jIEcheng(5))# 递归的方式实现def factorial (n):    if n == 1:        return 1    return n * factorial (n-1)print(factorial(5))

本人博客:https://blog.csdn.net/weixin_46654114
本人b站求关注:https://space.bilibili.com/391105864
转载说明:跟我说明,务必注明来源,附带本人博客连接。

请给我点个赞鼓励我吧

总结

以上是内存溢出为你收集整理的python的这四大函数类型得牢记(变量,引用,匿名,递归)全部内容,希望文章能够帮你解决python的这四大函数类型得牢记(变量,引用,匿名,递归)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1186786.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存