一、函数
代码重复使用,代码可读性差,所以要使用函数。
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
二、函数的定义与调用
1 def my_len(): #def 关键字,定义函数, 空格 函数名(变量) 2 l1 = [1, 2, 3, 4, 5, 6, 5, 4, 3] 3 count = 0 4 for i in l1: 5 count += 1 6 7 my_len() # 函数名 + () 执行此函数 8 9 #函数是以功能为导向,函数内部尽量不要有print
三、函数的返回值
3.1 遇到return 此函数结束,不在向下进行
1 def my_len(): 2 l1 = [1, 2, 3, 4, 5, 6, 5, 4, 3] 3 print(1111) 4 print(222) 5 return 6 print(333)
3.2 return返回值
3.2.1 不写return,返回None
1 def my_len(): 2 l1 = [1, 2, 3, 4, 5, 6, 5, 4, 3] 3 count = 0 4 for i in l1: 5 count += 1 6 print(my_len())
3.2.2 return None ,返回None
1 def my_len(): 2 l1 = [1,2,3,4,5,6,7] 3 count = 0 4 for i in l1: 5 count += 1 6 return None 7 print(my_len())
3.2.3 return 单个值 返回此单个值
def my_len(): l1 = [1,2,3,4] count = 0 for i in l1: count += 1 return ‘alex‘ print(my_len())
3.2.4 return 多个值 将多个值包在元组中,返回给调用者此元组
1 def my_len(): 2 l1 = [1, 2, 3, 4, 5, 6, 5, 4, 3] 3 count = 0 4 for i in l1: 5 count += 1 6 return 1,2,[123,2] 7 ret = my_len() 8 print(ret) 9 def my_len(): 10 l1 = [1, 2, 3, 4, 5, 6, 5, 4, 3] 11 count = 0 12 for i in l1: 13 count += 1 14 return 1,2,[123,2] 15 ret1,ret2,ret3 = my_len() 16 print(ret1,ret2,ret3)
四、函数的参数
4.1 函数的传参
1 l2 = [1, 2, 3, 4, 5, 6, 5, 4, 3, 3, ‘alex‘] 2 #函数的传参 3 def my_len(x): #形参:形式参数 4 count = 0 5 for i in x: 6 count += 1 7 return count 8 ret = my_len(l2) # 实参:实际参数 9 print(ret) 10 len(s)
4.2 实参传参
4.2.1 按位置传参
1 def my_len(x,y,z): #形参:形式参数 2 count = 0 3 for i in x: 4 count += 1 5 return count 6 ret = my_len(l2,s,‘alex‘) # 按位置传参 7 print(ret)
4.2.2 按关键字传参
1 def func(x,y): 2 z = x if x > y else y 3 return z 4 func(y = 2,x = 3) #关键字传参
4.2.3 混合传参 关键字参数永远在位置参数后面
1 def func(x,y,a,b): 2 print(x,y) 3 print(a,b) 4 func(1,2,b = 34,a = 3) # 混合传参
4.3 形式传参
4.3.1 位置参数
def my_len(x,y): #形参:形式参数 count = 0 for i in x: count += 1 return count ret = my_len(2,3) # 按位置传参 print(ret)
4.3.2 默认参数
def func(name,sex=‘男‘): with open(‘name_list‘,‘a‘,encoding=‘utf-8‘) as f1: f1.write(‘{} {}\n‘.format(name,sex)) while True: name = input(‘请输入名字:‘) if ‘姐‘ in name: sex = input(‘请输入性别:‘) func(name,sex) # 混合 else: func(name)