python学习日志day1
函数
一,基础
def 函数名(参数列表):
函数体
注意点
1.实参,形参
2.递归函数:在函数体中有调用该函数自身的代码
3.不需要接受参数时也要加括号
4.冒号
5.对于python中的可变序列,传递给函数后,可以在函数内通过下标或序列自身原地操作
的方法为可变数列增加,删除或修改元素值,实参也相应地被修改
二,参数类型
函数参数类型有主要的四种:
普通位置参数,默认值参数,关键参数,可变长度参数
1.普通位置参数
没有任何特殊说明的参数,实参按顺序依次传递给形参,要求实参与形参的数量和顺序都一至
2.默认值参数
在定义函数时为形参设置默认值,这样就可以不对默认值参数进行赋值,那么在调用带有默认值参数的函数时就可以不对那个已经有默认值的参数进行赋值操作,此函数也将直接用这个默认值
“如果需要查看函数所有默认值参数的目前所拥有的值,我们使用
函数名.__defaults__
返回值是一个元组,其中的元素是默认值参数目前的值
>>>def sum(a, b=2):
print(a+ b)
>>>sum.__defaults__
(1,)
Attention
1.调用函数时,如果对于已经设置成默认值参数再进行传递值,那么我们就是用新传递的值,也就是说使用调用者显示传递的值。
2.定义这种函数时,所有的默认值参数必须全部在位置参数右侧,也就是说,默认值参数右边不能再出现位置参数。不再进行举例
3.在多次调用该种类型函数时,可能会出现错误,联想列表的一些特点。书面上的话来说就是,默认值参数只在函数定义时进行解释,然后默认值参数的引用不再变化。
我们下面来阐述一下第三点的最后一句,我们用代码来解释
>>>i=3
>>>def f(n=i):
print(n)
>>>f()
3
>>>i=5 #函数定义后修改i的值不影响参数n的默认值
>>>f()
3
3.关键参数
通过关键参数可以按参数名字进行传递值,所以顺序可以不一致,避免了用户需要记牢顺序和位置的麻烦。
>>>def demo(a, b, c= 5):
print(a, b, c)
>>>demo(c=8, a=9, b=0)
9 0 8
4.可变长度参数
可变长度参数在定义函数时有两种形式,*parameter 和 **paremeter
对于*parameter,
这个可以接收多个位置实参然后将它们放在同一个元组中
对于 **paremeter
是用来接收多个关键参数并将其转化成字典
>>>def demo(*p):
print(p)
>>>demo(1, 2, 3)
(1, 2, 3)
def demo(**p):
for item in p.items():
print(item)
print(p)
demo(x=1,y=2,z=3)
('x', 1)
('y', 2)
('z', 3)
{'x': 1, 'y': 2, 'z': 3}