python笔记 函数01
好记性不如烂笔头,学习从摘抄开始!
函数:
将重复的代码,封装到一个模块,可以增强代码的模块化,提高代码的利用率。
(1)参数个数不可变:
def 函数名(参数1,参数2,,...,参数n):
函数体(重复的代码)
注意:
1.必须使用关键字def
2.函数体注意缩进
3.形参与实参的个数要一致
4.实参:调用 函数时所用的实际的参数
5.形参:定义 函数时用于占位的参数
(2)参数个数可变:
<1> *参数
def 函数名(*参数):
函数体(重复的代码)
注意:
1.调用时函数参数个数可变,
2.多个参数被放在一个元组中,但是不能使用关键字参数
代码:
def fun(*args):
print(args)
print(type(args))
fun(1,2,3)
fun('a','b',123)
输出结果:
(1, 2, 3)
<class 'tuple'>
('a', 'b', 123)
<class 'tuple'>
<2> **参数
def 函数名(**参数):
函数体(重复的代码)
注意:
1.调用时函数参数个数可变,
2. **参数:多个参数被放在一个字典中 ,调用时必须用 key = value 关键字参数
例子:
def fun(**args):
print(type(args))
print(args)
fun(a=1, b=2, c=3) #调用时 key=value 的关键字参数形式是必须的
输出结果:
<class 'dict'>
{'a': 1, 'b': 2, 'c': 3}
(3)参数个数不可变 + 参数个数可变:
def 函数名(参数1,参数2,...,参数n,,*参数n+1):
函数体(重复的代码)
注意:
1.在函数中,前n个参数一一对应,剩余的多个参数被放在一个元组中,
例子:
def fun(arg1,arg2,*args3):
print('arg1=', arg1)
print('arg2=', arg2)
print('arg3=', args3)
fun('a','b','c','d','e','f')
输出结果:
arg1= a
arg2= b
arg3= ('c', 'd', 'e', 'f')
(4)任意个数参数:
def 函数名(*args, **kwargs):
函数体(重复的代码)
例子:
def fun(*args, **kwargs):
print('args=', args)
print('kwargs=', kwargs)
fun(1, 2, 3, name='jack', age='15', sex='boy')
结果:
args= (1, 2, 3)
kwargs= {'name': 'jack', 'age': '15', 'sex': 'boy'}
(5)关键字参数:
def 函数名(参数1,参数2,....):
函数体(重复的代码)
注意:
1.调用函数时实参和形参名称对应起来
2.形参与实参的对应关系与位置无关
例子:
def fun(a, b, c):
print('a=', a, ' b=', b, ' c=', c)
fun(a=1, b=2, c=3)
fun(b=2, c=3, a=1)
输出结果:
a= 1 b= 2 c= 3
a= 1 b= 2 c= 3
(6)默认值参数:
def 函数名(参数1,参数2,参数3=value):
函数体(重复的代码)
注意:
1.调用函数时具有缺省值得参数可以省略,其默认值为缺省值value
2.如果具有缺省值的参数,在调用时被赋值,则缺省值被覆盖
例子:
def fun(a, b, c=3):
print('a:', a, ' b:', b, ' c:', c)
fun(a=1, b=2)
fun(a=1, b=2, c=33)
输出结果:
a: 1 b: 2 c: 3
a: 1 b: 2 c: 33
(7)函数返回值
注意:
1.关键字:return
2.return后面可以是一个参数或多个参数
3.如果是多个参数,则底层将会把多个参数先放在一个元组中,将元组作为整体返回
4.当返回值为多个值是可以,在接收返回值时也可以用多个变量接收
def fun():
...
return x1,x2,x3
a,b,c = fun() #a=x1 b=x2 c=x3
(8)装包与拆包:*参数,**参数
注意:
1.一般用于调用函数 def 函数名(*参数): 或 def 函数名(**参数):
2.对于元组tuple, *tuple 相当于将元组中的内容拆成单个的元素,
3.对于字典dict, **dict 相当于将字典中的键值对拆分成单个键值对,key1=value1, key2=value2, …
代码1:字典装包
def fun(**kwargs): //装包
print(type(kwargs))
print(kwargs)
fun(_001='python', _002='java', _003='c', _004='c++')
输出结果:
<class 'dict'>
{'_001': 'python', '_002': 'java', '_003': 'c', '_004': 'c++'}
代码2:字典拆包与装包
def fun(**kwargs): //装包
print(type(kwargs))
print(kwargs)
lans = {'001': 'python', '002': 'java', '003': 'c', '004': 'c++'}
fun(**lans) //拆包
输出结果:
<class 'dict'>
{'001': 'python', '002': 'java', '003': 'c', '004': 'c++'}