python中的函数无非就是封装、调用、传参等等…
**
**
这就是一个简单的print()输出,python最简单的,也是最基础,最重要的,后期调试代码,解决问题时经常会用到。
# TODO 鸟欲高飞,必先展翅
# TODO 向前的人 :Jhon
print("小美")
print("在吃饭")
print("添加联系方式")
结果:
小美
在吃饭
添加联系方式
**
函数
**
什么是函数?
函数是组织好的,可重复使用的,用来实现单一或者相关联功能的代码段,最重要的就是可复用,使有些代码不必重复书写,大大减少工作量
为什么要学习函数?函数有什么作用?
函数能提高应用的模块性,减少代码的冗余。除了进线程,代码的冗余也会影响计算机工作的效率。在计算机编程中,经常有一些逻辑算法需要打包,从而使其在不同的地方重复利用。函数允许将代码整合成一个功能模块,并且此功能模块能重复使用。在Python程序中函数不进可以提高程序的模块性,最大程度的减少代码冗余,而且有利于后期的代码维护。
流程的分解?
使用函数可以将整个流程分解成一个一个的子任务,实现模块化开发
如何定义一个函数?
在Python中定义一个功能函数语法格式如下
def 函数名([参数]):
"函数_文档字符串"
函数体
return [表达式]
注意
**
1、 函数代码块以def关键词开头,后接函数标识符和圆括号。
2、 任何传入的参数必须放在圆括号中间,圆括号中间可以用于定义参数。
3、 函数参数可以有多个,也可以没有,但圆括号必须保留
4、 定义函数的冒号后面,第一行语句可以选择性的使用文档字符串对函数进行说明。
5、 函数内容以冒号开始并且强制缩进
6、 return [表达式]结束函数,选择性的返回一个值给调用方。不带表达式的return 相当于返回none。Python中的函数允许没有返回值,也就是不用return。同样,return也可以返回多个值,中间以逗号隔开,等同于返回一个元组。如果retur=后面没有返回值,函数将自动返回none,none是Python中一个特别的数据类型,表示什么都没有
**
例如:
def Say_Hello():
print("小美")
print("在吃饭")
print("添加联系方式")
上面这个结果是为空的,什么都没有打印出来。以上的函数只是进行了一个封装,没有调用,所以没有任何结果打印出来。
这时候就引入了一个很重要的概念,就是调用函数。就是在使用这个函数时候调用一下他。例如我上课被老师叫起来回答问题,当老师上课让我回答问题的时候会叫一下我们的名字,这时我们的名字就是函数名,叫我们名字就是调用一下我。
def Say_Hello():
print("小美")
print("在吃饭")
print("添加联系方式")
Say_Hello()
结果:
小美
在吃饭
添加联系方式
我们可以发现在封装的函数下面喊一下它(也就是调用一下),就可以将函数中的方法打印出来(这时函数中的print()就是执行打印方法)
**
函数传参
**
def Say_Hello(boy):
print("小美"+boy)
print("在吃饭")
print("添加联系方式")
Say_Hello("很美")
结果:
小美很美
在吃饭
添加联系方式
我们发现在喊它(调用Say_Hello函数)的时候加上一个参数就可以传给他了。注意
,此时Say_Hello("很美")中 "很美"是实参,真实的参数,有肉有框架
,而Say_Hello(boy)中boy也就是我们经常说的形参,也就是只有一个框架,没有血肉,相当于起到了占位符的作用
。print(“小美”+boy)中"小美"+boy就是字符串的拼接,如果此时传递的不是字符串形式的参数,要使用字符串拼接就需要将不是字符串的强制转化为字符串:str(需要强制转换的参数)
多个函数传递
def Say_Hello(boy,adress,contact):
print("小美"+boy)
print("在"+adress+"吃饭")
print("添加"+contact+"联系方式吧")
Say_Hello("很美","上海","陌陌"
结果:
小美很美
在上海吃饭
添加陌陌联系方式
只需要同属传递多个参数就可以了。
还写一些什么呢,再来个例子更好的了解形参和实参吧
def Say_Hello(boy,adress,contact="微信"):
print("小美"+boy)
print("在"+adress+"吃饭")
print("添加"+contact+"联系方式吧")
Say_Hello("很美","上海","陌陌")
结果:
小美很美
在上海吃饭
添加陌陌联系方式吧
我们发现虽然contact赋值了微信(contact=“微信”),结果打印出来的还是陌陌,而不是微信。但是当实参没有传递参数的时候,函数就会用形参有的值(参数)
例如:
def Say_Hello(boy,adress,contact="微信"):
print("小美"+boy)
print("在"+adress+"吃饭")
print("添加"+contact+"联系方式吧")
Say_Hello("很美","上海")
结果:
小美很美
在上海吃饭
添加微信联系方式吧
这时候我们发现我们并没有传递实参 ''陌陌'' ,然后函数就用了形参 ''微信'' 了。所以综上所的,我们只需要记住,实参控制形参,框架的形参不可以为空。
位置参数
def Eat(a,b,c):
print("我想吃%s%s%s"%(a,b,c))
Eat("小米饭","中米饭","大米饭")
结果:
我想吃小米饭中米饭大米饭
关键字传参 元组/字典
def tuple_pack(a,*b):
print("tuple_pack中的a是:",a)
print("tuple_pack中的b是:",b)
tuple_pack(1,2,3)
def dict_pack(a,**b):
print("dict_pack中的a是:",a)
print("dict_pack中的b是:",b)
dict_pack(1,小花=15,小红=16,小白=18,阿白="永远年轻,不为钱发愁")
结果:
tuple_pack中的a是: 1
tuple_pack中的b是: (2, 3)
dict_pack中的a是: 1
dict_pack中的b是: {'小花': 15, '小红': 16, '小白': 18, '阿白': '永远年轻,不为钱发愁'}
return
**
def Say_Hello():
print("小美")
print("在吃饭")
print("添加联系方式")
return "小美","学生","花钱"
print(Say_Hello())
结果:
小美
在吃饭
添加联系方式
('小美', '学生', '花钱')
程序从上往下执行,遇到return就退出,类似于break,但是他可以把返回值 传给调用者(调用函数)。一般起到终止函数的执行,并返回一个指定的值给函数调用者。即:return 表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值, 由return后面的参数指定。return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。 我们可以发现return的返回值是以元组的形式存在的。
def Say_Hello():
print("小美")
print("在吃饭")
return "小美","学生","花钱"
print("添加联系方式")
print(Say_Hello())
结果:
小美
在吃饭
('小美', '学生', '花钱')
我们可以发现return下面的 **print("添加联系方式")
**没有执行,所以return起到了终结者的角色。
def Say_Hello(num1,num2):
print("小美")
print("在吃饭")
return num1+num2
print(Say_Hello(1,2))
结果:
小美
在吃饭
3
我们可以发现return直接把1+2的值传递出来了。-_-
def T_w(num1,num2):
c=num1 if num1>num2 else num2 #如果 num1 大于 num2,就num1赋值给 c ,否则就把num2赋值给c
return c
A=T_w(3,5)
print(A)
结果:
5