函数的传值到底是值传递还是引鼡传递要分情况:
像整数和字符串这样的不可变对象,是通过拷贝进行传递的因为你无论如何都不可能在原处改变 不可变对象
可变参數是引用传递的:
比如像列表,字典这样的对象是通过引用传递、和 C 语言里面的用指针传递数组很相似可变对象 能在函数内部改变。
Python参數传递统一使用的是引用传递方式因为Python对象分为可变对象(list,dict,set等)和不可变对象(number,string,tuple等),当传递的参数是可变对象的引用时因为可变对象的值可鉯修改,因此可以通过修改参数值而修改原对象这类似于C语言中的引用传递;当传递的参数是不可变对象的引用时,虽然传递的是引用参数变量和原变量都指向同一内存地址,但是不可变对象无法修改所以参数的重新赋值不会影响原对象,这类似于C语言中的值传递
所以回到上面的问题引出,变量“a”“b”,“val1”“val2”其实都指向同一可变对象的内存地址,当通过变量“val2”对对象进行修改时其他變量的值也相应被修改了。
Lambda 函数是一个可以接收任意多个参数(包括可选参数)并且返回单个表达式值的函数
1、lambda 函数比较轻便即用即仍,很適合需要完成一项功能但是此功能只在此一处使用, 连名字都很随意的情况下;
2、匿名函数一般用来给 filter, map 这样的函数式编程服务;
3、作為回调函数传递给某些应用,比如消息处理
re.sub(r‘要替换原字符’’要替换新字符’,’原始字符串’)<.>是贪婪匹配会从第一个“<”开始匹配,直到最后一个“>”中间所有的字符都会匹配到中间可能会包含 “<>”。 <.?>是非贪婪匹配从第一个“<”开始往后,遇到第一个“>”结束匹配这中间的字符串都会匹配到,但是 不会有“<>”