day4函数基础图灵python大海老师
1.引入
基于前一部分的学习,我们已经能够写一个简单的小程序了,但是随着程序功能的增多,代码量随着增大,此时仍不区分的把所有功能的实现代码放到一起(简单的说就是对代码进行分类),可读性变差,且程序中需要频繁使用同一功能时,只能重复编写该功能的实现代码,日积月累,程序将变得冗长。
1.1.什么是函数?
1.1.1编程来源于生活
我们完全可以从现实生活中找到简化程序设计的方案:比如一个修理工会事先准备好螺丝刀,锤子等工具,这样在进行修炼的过程中,需要用到螺丝刀的功能时就直接拿来螺丝刀使用,需要用到锤击物体的功能时就直接拿来锤子使用,而无需临时制造。这个例子的核心在于(事先准备好工具,遇到应用场景时,拿来就用)
1.1.2在程序中
在程序中,函数就具备某一功能的工具事先将工具准备好 锤子 扳手 工厂
即函数的定义遇到应用场景拿来就用即函数的调用所以务必记住:
函数的使用必须遵循先定义,后调用的原则(先制造了工具,工具才能使用)
2.函数基础
2.2.如何使用函数
2.2.1如果把函数比喻成一个生产车间,那么员工和机器就是函数内封装的代码
2.2.2函数的语法结构
函数分为2个阶段:定义阶段(制造代码),调用阶段(执行函数内的体代码)
定义阶段
语法
1 | 只检测函数体的语法( 工厂合不合格),不执行函数体代码 (不使用工厂) |
实例
1 | def factory(): # 制造一个工厂 |
调用阶段
语法
1 | 函数的调用:函数名加括号 |
实例
1 | # 函数名其实就是函数的内存地址 |
2.3.函数作用
1 | 1.减少重复代码,减少程序冗长问题 |
3.函数的三大特性
函数功能,函数参数,函数返回值
3.1.函数功能
3.1.1有功能
1 | # 函数内有实际运行的代码(代表有功能) |
3.1.2.无功能
1 | # pass占位,函数内无实际代码(用来测试,先做好项目的需求) |
3.2.函数参数
函数的参数我们把它比喻成现实世界工厂需要的零件
3.2.1.无参函数
1 | # 应用场景仅仅只是执行一些操作,比如与用户交互,打印(工厂制造手机,不需要外接资源) |
3.2.2.有参函数
1 | # 有参 |
参数分为形参和实参
形参
1 | 指的是在定义函数阶段括号内指定变量名,即形参本质就是"变量名" |
形参又分为:位置形参,默认形参,不定长形参
实参
1 | 指的是在调用函数阶段括号内传入的值,即实参本质就是"值" |
实参又分为:位置实参,关键字实参
1.位置形参
1 | # 位置形参:按照位置定义的形参 |
2.位置实参
1 | # 实参: 指的是在调用函数阶段括号内传入的值,即实参本质就是"值" |
3.关键字实参
1 | # 关键字实参:在调用函数阶段,按照key=value的形式指名道姓地为形参传值 |
4.默认形参
1 | #默认参数 ***** |
位置形参vs默认形参
1 | # 对于大多情况下传的值都不相同的,应该定义成位置形参 |
5.不定长形参
5.1.在形参中带*
1 | # 在形参中带*:会将调用函数时溢出位置实参保存成元组的形式,然后赋值*后的变量名 |
5.2.序列类型的实参*打散成位置实参
1 | def foo(x,y,z): |
5.3.在形参中带**
1 | # 在形参中带**:会将调用函数时溢出关键字实参保存成字典的形式,然后赋值**后的变量名 |
5.4.字典实参可以打散成关键字实参传参
1 | # 打散字典 |
5.5.不定长参数的规范
1 | #5. 规范: 在形参中带*与**的,*后的变量名应该为args,**后跟的变量名应该时kwargs |
3.2.3.参数的顺序
1 |
3.2.函数的返回值
函数的返回值我们把它比喻成现实世界工厂里面的物流,将产品分发给全世界
3.2.1.参考内置函数返回值
1 | # @Author : 大海 |
3.2.2.我们刚才学习的自定义函数
1 | # 返回值是一个函数的处理结果(物流)return |
3.2.3.return的特性
1.函数结束的标志
1 | ''' |
2.无类型限制
1 | ''' |
3.无个数限制
1 | ''' |
4.利用return结束循环
1 | ''' |
4.函数调用的三种方式.py
4.1.语句形式
1 | # 1 语句形式 |
4.2.表达式形式
1 | def foo(x,y): |
4.3.可以当作参数传给另外一个函数
1 | def max2(x,y): |
5.函数局部变量和全局变量的修改.py
5.1.全局变量和局部变量和函数的关系
5.1.1.外部不能访问函数内部的变量
1 | def fun1(): |
5.1.2.函数内部能够访问函数外部的变量
1 | x = 123 |
5.1.3.函数里面不能修改函数外部的变量
1 | x = 123 |
5.1.4.global修改全局变量
1 | x = 123 |
5.1.5.nonlocal让嵌套函数能够修改嵌套函数之外的值
1 | # 只检测函数体的语法( 工厂合不合格),不执行函数体代码 (不使用工厂) |
6.常用的内置函数.py
1 | # @Author : 大海 |