函数是将一段实现功能的完整代码,使用函数名称进行封装,通过函数名称进行调用。以此达到一次编写,多次调用的目的。
内置函数:
输入函数:input()
输出函数:print()
列表定义函数:list()
自定义函数:
def 函数名(参数列表): 函数体 [return 返回值列表]
函数调用:函数名(参数列表)
def get_sum(num): s=0 for i in range(1,num+1): s+=i print(f'1到{num}之间的累加和为:{s}') get_sum(10) get_sum(100) get_sum(1000)
函数的参数传递
位置参数:是指调用时的参数个数和顺序必须与定义的参数个数和顺序相同。
关键字参数:是在参数调用时,使用“形参名称=值”的方法进行传参,传递参数顺序可以与定义时参数的顺序不同。
默认值参数:是在函数定义时,直接对形式参数进行赋值,在调用时如果该参数不传值,将使用默认值,如果该参数传值,则使用传递的值。
def get_birthday(name='李磊',age=20): print(f'祝{name} {age}岁生日快乐') #位置参数调用 get_birthday('张三',24) #关键字参数调用 get_birthday(age=24,name='张三') #位置参数和关键字参数混合调用时,位置参数必须在关键字参数前面,否则会报错 get_birthday('张三',age=24) #默认值参数传值,函数在定义的时候已指定了默认值 get_birthday() #name和age都使用默认值 get_birthday('张三') #age使用默认值 get_birthday(age=24) #name使用默认值 # get_birthday(24) 没有使用关键字参数传参,就相当于24作为name的传值,导致程序报错。 # 当位置参数和默认值参数同时存在的时候,位置参数必须在默认值参数的前面,否则函数定义会报错
可变参数:又分为个数可变的位置参数和个数可变的关键字参数两种,其中个数可变的位置参数是在参数前加一颗星(*para),para形式参数的名称,函数调用时可接受任意个数的实际参数,并放到一个元组中。个数可变的关键字参数是在参数前加两颗星(**para),在函数调用时刻接受任意多个“参数=值”形式的参数,并放到一个字典中。
# 个数可变的位置参数 *para def fun(*para): print(type(para)) for item in para: print(item) print('*'*50) fun(10,20,30,40) # 类型为tuple print('*'*50) fun(10) print('*'*50) fun(20,30) print('*'*50) # [10,20,30,40]这时列表参数是作为一个单独参数调用,而如果要使用列表中的元素调用,则需要在列表参数前加上* fun([10,20,30,40]) fun(*[10,20,30,40]) # *相当于系列解包 # 个数可变的关键字参数 **para def fun2(**para): print(type(para)) for key,value in para.items(): print(f'{key}-->{value}') print('*'*50) fun2(name='张三',age=20,sex='男') #类型为dict print('*'*50) d={'name':'张三','age':60,'sex':'男'} #fun2(d) #这种使用字典类型数据作为参数,不能调用。需在参数前面加上**,系列解包 fun2(**d) #在参数前加上**进行系列解包
函数的返回值
1,如果函数的运行结果需要在其他函数中使用,那么这个函数就应该被定义为带返回值的函数。
2,函数的运行结果使用return关键字进行返回。
3,return可以出现在函数中的任意一个位置,用于结束函数。
4,返回值可以是一个值,或多个值,如果返回的值是多个,结果是一个元组类型。
# 1)无返回值函数 def get_sum1(a,b): print(a+b) get_sum1(10,15) print(get_sum1(10,15)) print('*'*50) # 2)只有返回一个值的函数 def get_sum2(a,b): return a+b result=get_sum2(10,25) print(result) result=get_sum2(get_sum2(10,10),20) print(result) print('*'*50) # 3) 返回多个值的函数 返回的是元组类型 def get_sum3(num): s=0 odd_sum=0 even_sum=0 for i in range(1,num+1): if i%2==0: even_sum+=i else: odd_sum+=i s+=i return odd_sum,even_sum,s result=get_sum3(10) print(type(result)) print(result) a,b,c=get_sum3(10) #可以使用多个参数进行接收结果 print(a) print(b) print(c)
posted on
浙公网安备 33010602011771号