前言
该文档旨在厘清函数的五种参数的定义、用法及注意点。
概述
1)必选参数;2)默认参数;3)可变参数;4)命名关键字参数;5)关键字参数:
参数定义的顺序:1)→ 2)→ 3)→ 4)→ 5)
各参数说明
1)必选参数
顾名思义,是指在调用函数的时候,必须给这个参数指定一个符合该类型的值
栗子1:计算x的n次方

#计算x的n次方 def powder(x,n): s = 1 while n > 0: n = n - 1 s = s * x return s powder(2,3)#调用该函数
这里的powder(x,n)中的x,n就为必选参数,必须得传入,否则会报错
2)默认参数
是指在定义函数的时候,赋予该参数一个默认值,如果调用函数的时候没有传入该参数,就使用该参数的默认值
栗子2:计算x的3次方

#计算x的3次方 def powder(x,n=3): s = 1 while n > 0: n = n - 1 s = s * x return s powder(2)
在调用这个函数的时候,默认n=3,如果要算x的3次方,只需要传入x的值即可
注意点:
1)必选参数在前,默认参数在后,否则解释器会报错;猜测原因可能为:如果设置默认参数在前的规则,会因为连等的原因导致歧义;
2)当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面,变化小的参数就可以作为默认参数: 这句话暂时还不理解,mark一下;
3)不按顺序提供默认参数的时候,需要写上参数名:city = 'Beijing'
4)默认参数的坑:如果把默认参数定义成一个空的list,那么每次调用该函数,如果改变了[]的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了,
因此默认参数必须指向不变对象;
栗子3:默认参数的坑

#默认参数的坑 def add_end(L=[]): L.append('end') return L add_end() #python函数在定义时,默认参数L的值就被计算出来了,即[] #因为默认参数L也是一个变量,它指向对象[] #每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了
栗子4:修改默认参数的坑

#修改上面默认参数的坑 def add_end(L=None): if L is None: L=[] L.append('end') return L add_end() #不变对象一旦创建,对象内部的数据就不能修改
。。。。
占个坑 还没写完 等一下再补上。。