Python学习笔记(三)

1)默认参数power(x, n=2):,这样,当我们调用power(5)时,相当于调用power(5, 2)。只有与默认参数不符的才需要提供额外的信息power(5,3)

2)Python函数在定义的时候,默认参数L的值就被计算出来了,即[],因为默认参数L也是一个变量,它指向对象[],每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了,用none实现不变

if L is None:

L = []

3)定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号

4)*nums表示把nums这个list的所有元素作为可变参数传进去

5)**extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**kw参数

6)命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数

6.1)如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了

6.2)*args是可变参数,args接收的是一个tuple;**kw是关键字参数,kw接收的是一个dict。

7)使用递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致栈溢出。

7.1)针对尾递归优化的语言可以通过尾递归防止栈溢出。尾递归事实上和循环是等价的,没有循环语句的编程语言只能通过尾递归实现循环。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容