python里的拆包引用递归与匿名函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python里的拆包引用递归与匿名函数相关的知识,希望对你有一定的参考价值。
拆包:*A拆元组,**B拆字典。
引用:在C、C++里面里面a=1,b=a,实际上相当于硬链接,相当于两份a、b各有一个1,多占一个空间,而在python里就是软连接,只有一份,通过id(a)来查看id都一样,
在python里定义的东西如一直没引用,那么就会成为垃圾,不用担心,python有自己的机制去除垃圾。
不可变类型:数字、字符串、元组。
可变类型:列表、字典,它们都不能做字典的key。
递归:一个函数里调用了这个函数自己,递归完成阶乘,3的阶乘=3*(2的阶乘)
递归时一定要想到何时要结束递归,不然最终程序一定会崩掉,因为它会占内存一直下去会将内存全部占完。
正反排序和倒序
字典要想比大小需要通过匿名函数,匿名函数冒号后面的值就相当于key的返回值,可按照数字或asic码来做比较,如下:
匿名函数用来实现某功能,简易化操作,不需要专门命名定义,也不用多条函数,当然传参又需要结果时,非常好用。
当需要调用匿名函数表达式时可以用eval来转换,相当于用int可以转换字符串为数字
数值交换,第一种方法通过第三个空变量,相当于两满杯水要实现交换需要来一个空瓶:
第二种方法:
第三种方法:python独有
函数内部变量之所以不能修改全局变量,是因为全局变量为不可变,此时只能通过global参数来修改全局变量,但如果全局变量是列表或字典等可变的,那么函数内部变量即可以不加global关键字随时进行修改。
在python里,num+=num不一定等于num=num+num,前面的意思代表可以直接对num赋值,在对函数内修改全局变量有效,而后面那个是对num赋一个新值,不能修改全局变量值,这点要注意。
以上是关于python里的拆包引用递归与匿名函数的主要内容,如果未能解决你的问题,请参考以下文章