在学习python 过程中,很多用法,大家都知道可以这样用,不能那么用,但是很多时候,为啥么不能那么用,关心的人不多,知其所以然,对于学习是很有必要的,有助于我们加深理解。多了解总没有坏处的。
1.自定义函数时,有默认值的形参应放在无默认值的形参之后
在定义函数时,如果有默认值的形参放在无默认值的形参之前,在函数调用时,python依然会将带入函数的实参作为位置实参传递给第一个形参,这样,会导致无默认值的形参得不到实参传入。因此,有默认值的形参需要在无默认值的形参之后,否则将会有如下报错信息。
2.逻辑判断的短路原则
A and B
如果前面的条件为假,那么这个and前后两个条件组成的表达式一定为假,第二个条件不会被计算。
A or B
如果前面的条件为真,那么这个or前后两个条件组成的表达式一定为真,第二个条件不会被计算。
3.字符串拼接,用join() 还是 '+'
首先,直接用join() 和 +,都可以实现字符串的拼接,两者具体的用法如下:
然后,如果注重执行效率的话,特别是需要拼接量级较多的字符串时,两者的执行效率不可同日而语,甚至可以说是天壤之别。废话不多说,看下图:
从上面的代码中,可以看到Join()拼接字符串要比+快很多,特别是在十万次以上的循环中。
那是什么原因导致这种差别呢?我们知道,str类型为不可变对象,顾名思义,修改字符串就得将原字符串中的值复制,然后开辟一块新的内存,加上拼接的内容后,写入新的内存中,以达到“修改字符串”的效果。在使用‘+’进行拼接时,正是使用了重复性的复制、申请新内存、写入值到新内存的流程;而使用join()方法拼接字符串时,会先计算总共需要申请多少内存,然后一次性申请所需要内存,并将字符串复制过去,这样就省去了很多重复性的内存申请和写入,极大程度的节省了时间消耗。