拆包:*A拆元组,**B拆字典。

python里的拆包、引用、递归与匿名函数_第1张图片 

 

引用:在CC++里面里面a=1b=a,实际上相当于硬链接,相当于两份ab各有一个1,多占一个空间,而在python里就是软连接,只有一份,通过id(a)来查看id都一样,

python里的拆包、引用、递归与匿名函数_第2张图片 

 

python里定义的东西如一直没引用,那么就会成为垃圾,不用担心,python有自己的机制去除垃圾。

 

不可变类型:数字、字符串、元组。

可变类型:列表、字典,它们都不能做字典的key

 

递归:一个函数里调用了这个函数自己,递归完成阶乘,3的阶乘=3*(2的阶乘)

wKioL1nQOaCSKOcCAAAkHvqPGc8381.png-wh_50 

python里的拆包、引用、递归与匿名函数_第3张图片python里的拆包、引用、递归与匿名函数_第4张图片

 

 

递归时一定要想到何时要结束递归,不然最终程序一定会崩掉,因为它会占内存一直下去会将内存全部占完。

 

正反排序和倒序

  

python里的拆包、引用、递归与匿名函数_第5张图片python里的拆包、引用、递归与匿名函数_第6张图片


 

字典要想比大小需要通过匿名函数,匿名函数冒号后面的值就相当于key的返回值,可按照数字或asic码来做比较,如下:

python里的拆包、引用、递归与匿名函数_第7张图片 

匿名函数用来实现某功能,简易化操作,不需要专门命名定义,也不用多条函数,当然传参又需要结果时,非常好用。

python里的拆包、引用、递归与匿名函数_第8张图片 

 

当需要调用匿名函数表达式时可以用eval来转换,相当于用int可以转换字符串为数字

python里的拆包、引用、递归与匿名函数_第9张图片eval相当于把字符串lambda转为表达式

数值交换,第一种方法通过第三个空变量,相当于两满杯水要实现交换需要来一个空瓶:

python里的拆包、引用、递归与匿名函数_第10张图片 

第二种方法:

wKiom1nQO1rjk6sGAAAnxo6pD8c128.png-wh_50 

第三种方法:python独有

wKioL1nQOy_gBXBqAAA5YSVH_lI476.png-wh_50 

 

函数内部变量之所以不能修改全局变量,是因为全局变量为不可变,此时只能通过global参数来修改全局变量,但如果全局变量是列表或字典等可变的,那么函数内部变量即可以不加global关键字随时进行修改。

 

python里,num+=num不一定等于num=num+num,前面的意思代表可以直接对num赋值,在对函数内修改全局变量有效,而后面那个是对num赋一个新值,不能修改全局变量值,这点要注意。