文章目录
- 一、定义和好处
- 二、函数的参数
- 1.函数的参数分类
- 2.按形参来分
- 3.实参来分
- 4.参数位置顺序
- 三、可变长位置参数和可变长关键字参数
- 1.可变长位置参数
- 2.可变长关键字参数
- 求和案例
- 四、函数的return语句
一、定义和好处
函数是指实现某个功能的一段代码
使用函数的好处:
1.模块化程序设计
2.减少代码冗余
3.维护方便
二、函数的参数
1.函数的参数分类
形参:函数定义的时候,指定的参数
实参:函数调用的时候,传递的参数
2.按形参来分
必选参数
默认参数
可变长位置参数
可变长关键字参数
3.实参来分
位置参数
关键字参数
# 必选参数
def stuinfo(name,age,sex):
print(f"my name is {name},ma age is {age},my sex is {sex}")
# 位置参数
stuinfo('sc',4,'f')
# 默认参数
def stuinfo2(name,age,sex='f'):
print(f"my name is {name},ma age is {age},my sex is {sex}")
stuinfo2("sc",4)
stuinfo2("sc",5,'m')
# 关键字参数
stuinfo2("sc",sex='m',age=6)
4.参数位置顺序
形参的定义顺序,func01(必选参数,可变长位置参数,默认参数,可变长关键字参数)
实参的调用顺序,关键字参数放在位置参数的后面,func01(位置参数,关键字参数)
三、可变长位置参数和可变长关键字参数
1.可变长位置参数
案例
# 可变长位置参数
def myargs(name,*num):
print(f"{name}:{num}")
print(type(num),*num) #-->print(type(num),1,2)
myargs('sc')
myargs('sc',1)
myargs('sc',1,2) #python内部将1,2组包成元组(1,2)赋值给num,再利用*num进行解包,解包成1,2
运行结果
sc:()
<class 'tuple'>
sc:(1,)
<class 'tuple'> 1
sc:(1, 2)
<class 'tuple'> 1 2
组包和解包
packing 和 unpacking
packing 组包:python自动完成 1,2 --> 元组(1,2)
unpacking解包:*num --> unpacking (1,2) --> 1 2
2.可变长关键字参数
案例
# 可变长关键字参数
def myargs(**num):
print(num)
myargs(a=1, b=2)
myargs(a=1)
myargs(a=1, b=2, c=3)
#python内部将传入的参数a=1, b=2组包成字典{'a':1,'b':2}赋值给num,**num进行解包,解包成a=1,b=2,这里不能print(**num),因为print里面的value是可变位置参数,不是关键字参数
运行结果
{'a': 1, 'b': 2} <class 'dict'>
{'a': 1} <class 'dict'>
{'a': 1, 'b': 2, 'c': 3} <class 'dict'>
packing --> a=1, b=2 --> {“a”:1,“b”:2}
unpacking --> {“a”:1,“b”:2} --> a=1,b=2
求和案例
def mysum(*args):
# sum = 0
# for i in args:
# sum += i
# print(sum)
print(f"元组的和为:{sum(args)}")
mysum(1,2,3,4,5)
def mysum2(**args):
print(f"字典的和为:{sum(args.values())}")
mysum2(a=1,b=2)
四、函数的return语句
退出函数,并且返回结果
一个函数一旦执行到return就退出,不会执行后面的语句
如果函数没有return语句, 默认返回None,如果return后面不接任何表达式,也是返回 None
return可以有多个
return 一次也可以返回多个值
def maxnum(x,y):
print("return语句。。。。")
if x>y:
print("return x")
return x
elif x<y:
print("return y")
return y
return x,y
print("return end...")
result = maxnum(5,5)
# 先打印输出第一句话, 接着x==y,return x,y ,然后退出函数
# 返回两个数,result为(5, 5)
i,j = maxnum(5,5)
print(f"结果为:{result},i为{i},j为{j}")
运行结果
return语句。。。。
return语句。。。。
结果为:(5, 5),i为5,j为5