一.函数的定义
- 函数必须遵循先定义后调用的原则,在开发过程中,可以把一些功能代码定义成函数,可以重复使用
# 函数的语法
def 函数名(参数):
'''函数功能描述'''
函数体(代码)
return 值
函数示例
# 有参函数
def min(x,y):
res=x if x < y else y
return res
# 无参函数
def interactive():
user=input('user>>: ').strip()
passwd=input('password>>: ').strip()
return (user,passwd)
二.调用函数与函数返回值
实例
def foo():
print('hello world!')
bar()
def bar():
print('fuck you!')
foo() # 函数的调用
三.函数的参数
函数的参数分为形参和实参:
- 形参即在定义函数时,括号内声明的参数。形参本质就是一个变量名,用来接收外部传来的值。
- 实参即在调用函数时,括号内传入的值,值可以是常量、变量、表达式或三者的组合.
3.1.位置参数
def register(name,age,sex):
print('name:{} age:{} sex:{}'.format(name,age,sex))
# 三个参数都必须被传值
3.2.关键词参数
# 调用函数用key=value形式传参
def register(name,age,sex):
print('name:{} age:{} sex:{}'.format(name,age,sex))
register('weixu',24,'man')
register(sex='man',name='xixi',age=18)
register(18,sex='man',name='xiaowei')
register('lili',18,sex='male')
# 位置参数和关键词参数混合使用时,必须要按顺序使用,位置参数必须在关键词参数前面
3.3.默认参数
# 设置sex默认值
def register(name,age,sex='male'):
print('name:{} age:{} sex:{}'.format(name,age,sex))
register('weixu',18)
register('chenxue',18,'female')
# 默认参数必须放在位置参数后面
3.4.可变长的参数
- 可变长的位置参数
def foo(x,y,z,*arg):
print(x)
print(y)
print(z)
print(arg)
foo(1,2,3,4,5) # 溢出值保存为元组格式
list=[1,2,3,4]
foo(1,2,3,*list)
foo(1,2,3,list)
foo(*[1,2,3,4])
# 求和
def add(*arg):
res=0
for i in arg:
res+=i
print(res)
add(1,2,5,323,23,23,23,23)
- 可变长关键词参数
def foo(x,**kwargs):
print(x)
print(kwargs)
foo(x=1,y=2,z=5)
dict={'a':22,'b':33}
foo(x=1,y=2,**dict)
# 溢出值保存为字典格式
def foo(x,y,z=3):
print(x)
print(y)
print(z)
foo(**{'x':1,'y':2})
3.5.分隔符*使用
def register(name,age,*,sex,height):
print('name:{} age:{} sex:{} height:{}'.format(name,age,sex,height))
register('weixu',18,sex='man',height=1.8)
def register(name,age,*,sex='male',height):
print('name:{} age:{} sex:{} height:{}'.format(name,age,sex,height))
register('weixu',24,height=1.8)
def register(name,age,*arg,sex,height):
print('name:{} age:{} arg:{} sex:{} height:{}'.format(name,age,arg,sex,height))
register('weixu',24,1,3,2,3,23,23,sex='male',height=1.8)
# *前面是位置参数,后面用关键词参数key=value形式
3.6.*args和**kwargs组合使用
def func(x, y, c):
print(x, y, c)
def xixi(*args, **kwargs):
print(args,kwargs)
func(*args, **kwargs)
xixi(2,y=2,c=3)
因为func函数只能接收3个参数,所以xixi函数必须传3个参数