- 面向过程编程
- 代码重复。
- 代码可可读性不高。
- 函数:函数是以功能为导向,一个函数封装一个功能。登录,注册,文件的改的操作.....
函数减少代码的重复性,增强了代码的可读性。
2.函数的结构
- def 关键字: 定义一个函数。紧跟一个空格。
new_len函数名:与变量命名规范一致。一定要具有可描述性。
():结构需要,传参使用。
: 分割符。
tab键:四个空格。缩进。函数体
3.函数的调用
l1 = [1, 2, 3] def new_len(): count = 0 for i in l1: count += 1 print(count) new_len() new_len() #函数名()是函数的执行者,调用者,
4.函数的返回值
- 一个函数就是封装一个功能,这个功能一般都会有一个最终结果的,比如你写一个登录函数,最终登录成功与否是不是需要返回你一个结果?还有咱们是不是都用过len这个函数,他是获取一个对象的元素的总个数,最终肯定会返回一个元素个数这样的结果:
- 函数的返回值用return表示
- 结束函数
- 函数中没有return或者只写一个return,函数的执行者得到的是None
- 函数中return后面是单个值,函数的执行者得到的是这个值(不改变值的类型)
- 函数中的return后面是多个值,函数的执行者得到的是一个元祖
5.函数的传参
-
实参角度:
-
位置参数。
# 1. 位置参数。: 从左至右,按照顺序,一一对应 def meet(sex,age,job,): print('左划一下') print('右划一下') print(f'寻找性别{sex},年龄{age}岁,{job}') print('聊天') print('约吗') print('约....') meet('女','18~25','讲师') # 写一个函数,接收两个数字的参数,将较大的数字返回。 # def comp(a,b): # if a > b: # return a # else: # return b # ret = comp(1,2000) # print(ret) # 三元运算符:简单的if else。 # a1 = 1 # b2 = 2 # ret = a1 if a1 > b2 else b2 # # print(ret) # # def comp(a,b): # # ret = a if a > b else b # # return ret # return a if a > b else b # ret = comp(1,2000) # # print(ret)
-
关键字参数。
def meet(sex,age,job,hight,weight,): print('左划一下') print('右划一下') print(f'寻找性别{sex},年龄{age}岁,身高{hight},体重{weight},工作{job}') print('聊天') print('约吗') print('约....') # meet(sex='女',job='学生',weight=120,hight=170,age='18~25')
-
混合参数。
# def meet(sex,age,job,hight,weight,): # print('左划一下') # print('右划一下') # print(f'寻找性别{sex},年龄{age}岁,身高{hight},体重{weight},工作{job}') # print('聊天') # print('约吗') # print('约....') # # meet('男',27,'ITC语言',weight=120,hight=175,)
-
-
形参角度:
位置参数 : 与实参角度位置参数一样
-
默认参数 : 一定在位置参数的后面,不传参数就沿用默认的参数
# open('文件的改',encoding='utf-8') def meet(age,job,sex='女'): print('左划一下') print('右划一下') print(f'寻找性别{sex},年龄{age}岁,{job}') print('聊天') print('约吗') print('约....') # meet('18~25','幼师') # 更改默认参数 # meet('18~25','幼师',sex='laddy_boy') meet('18~25','幼师','laddy_boy')
动态参数。
仅限关键字参数。(了解)