Python基础——函数
Python基础——函数
函数的定义
def 函数名([参数列表]) #参数列表可选项,可以没有参数
函数体
- 定义函数时,可以对形参设置默认值,当不传入实参实,返回默认形参
- “默认参数”必须放在“位置参数“之后,否则会报错
#定义一个函数
def printinfor(name,age = 18):#将age设置为默认参数
print(f'{name},你的年龄是{age}')
函数定义的其他形式
- 形式一:* 号以后的 形参 只能用 关键字实参 传递
def fun_2(a,b,*,c):
print(f'a = {a},b = {b},c = {c}')
fun_2(9,8,c=7)#传参形式
- 形式二:位置参数,关键字参数,不知传入个数的位置参数,不知传入个数的关键字参数
def fun_3(a,b=10,*args,**args2):
pass
- 形式三:不知传入个数的位置参数,不知传入个数的关键字参数
def fun_4(*args,**args2):
pass
函数的调用
位置参数必须传值,位置参数可以不传值,返回默认值
函数名(参数列表)
#调用上一个函数,传入参数
printinfor('kiki')#对默认参数不传值
printinfor('kiki',20)#传入所有实参
函数名的赋值
函数名其实是指向一个函数对象的引用,完全可以把函数名赋值给一个变量,相当于给函数起了“别名”
numbers =[2,3,4,5,6,7]
a = len#变量a指向len函数
numbers_len = len(numbers)
print('调用len函数,得到列表长度为:',numbers_len)
numbers_len1 = a(numbers)
print('通过变量a调用len函数,得到列表长度为:',numbers_len1)
函数调用时参数的传递
定义:
def fun_1(a,b,c):
print(f'a = {a},b = {b},c = {c}')
位置传参
#位置传参
fun_1(10,20,30)
调用时将列表中的每个元素转换成 “位置实参”传入
lis = [3,4,5]
fun_1(*lis)
关键字传参
#关键字传参
fun_1(a=10,b=20,c=30)
调用时,将字典中的每个键值对都转换成 “关键字实参” 传入
dic = {'a':6,'b':7,'c':8}
fun_1(**dic)
函数参数总结(形参)
函数参数的分类(对形参而言)
- 默认参数
- 不定长参数
函数参数——默认值参数(形参)
- 函数定义时设置的参数是:形参。
- 在设置形参的时候可以给每个参数设置一个默认值
- 当函数调用时,如果该形参位置没有传入实参,就使用形参的默认值
- 定义函数设置形参时 ‘默认参数’ 必须放在 ’位置参数‘之后,否则会报错
#定义一个函数
def printinfor(name,age = 35):
print('Name:',name)
print('Age:',age)
result = print('函数调用成功')
return result
#传参——关键字实参
printinfor(age=50,name='Tom')
printinfor('Tom',50)
#传参——位置实参,要与形参一一对应
printinfor('kiki',20)
函数参数——不定长参数(形参)
- 个数可变的位置参数(一个函数只能定义一个)
函数定义时,无法事先确定传递的 位置实参 的个数时,使用可变的位置参数使用*定义可变的 位置形参
结果为一个元组
def fun(*args):
print(args)
fun(1)
fun(2,3)
fun(4,5,7,9)
输出:
- 个数可变的关键字参数(一个函数只能定义一个)
函数定义时,无法事先确定传递的 关键字实参 的个数时,使用可变的关键字形参使用**定义个数可变的关键字形参
结果为一个字典’’’
def fun01(**args):
print(args)
fun01(a=10)
fun01(a=20,b=30,c=40)
输出:
- 一个函数的定义过程中,既有个数可变的位置形参,又有个数可变的关键字形参
def 函数名([*args1,**args2]):
pass
*args1: 个数可变位置形参
**args2: 个数可变的关键字形参
函数返回值
- 如果函数没有返回值【函数执行完毕之后,不需要给调用处提供数据】return 可以省略不写
- 函数的返回值,如果是1个,直接返回原类型。
- 函数的返回值,如果是多个,返回的结果为元组。
def fun03(num):
odd = [] #存奇数
even = []#存偶数
for i in num:
if i%2:
odd.append(i)
else:
even.append(i)
return odd,even
print(fun03([10,29,34,23,44,53,55]))#多个返回值返回的是元组
输出: