自学python记录_(3)函数

函数是什么呢?函数就是一个方法或则说一个功能的展现。

一、函数定义

1 def functionName(arguments):
2     body....
3     return value

第一部分:可以看见python函数是以一个def关键字开始的,后面跟着的就是函数名字functionName,紧接着小括号里面跟着的是这个函数的参数arguments。
第二部分:是函数的功能展示,需要实现什么功能在这里展示出来。
第三部分:最后一部分是返回值。

二、参数

函数的参数按照概念 分为实参形参

2.1形参

形参就是实参的傀儡,形参只是在功能展示的时候,用来替代实参的一个名字。就像玩游戏的时候你进入游戏的一个角色,你在游戏之外你是你自己,你进入游戏了你就是鲁班,你就是貂蝉。这英雄就是形参。

2.1.1静态形参

其实只要一个静态参数就可以满足90%的函数需求了,那为什么还有动态参数这个东西,我认为还是因为---懒。因为静态参数有一个不好的地方就是当需要输入的参数很多的时候,一个一个定义形参太麻烦了,这个时候动态参数就营运而生了。

1 def sum(*args):
2     sum = 0
3     for i in args:
4         sum += i
5     return sum
6 print sum(1,2,3,4,99)
7 输出:
8 >>109    

我们讲回静态参数,静态参数就是你玩《英雄联盟》时候选择的英雄技能,q的功能就是禁锢,e就是防御,英雄技能否是固定好的,不会因为不玩莫甘娜,她的技能就变了。而动态参数就是召唤师技能,可以是闪现,也可以是治疗。

静态参数又可以细分为位置参数、关键字参数、默认参数。

位置参数:一个萝卜一个坑,有坑就必须就萝卜。

1 def mymax(x,y):
2     return  x if x > y else y
3 print mymax(10,20)
4 输出:
5 >>20

关键字参数:这个时候的萝卜都是有编号的,对应哪个坑心里明白就行。

1 def mymax(x,y):
2     return x if x > y else y
3 print mymax(y = 10,x = 20)
4 print mymax(x = 20,y = 10)
5 输出:
6 >>20
7 >>20

默认参数:坑里面已经有一个萝卜了,你需要用这个坑你就鸠占鹊巢,你不需要的时候呢,它就是那个被你欺负的萝卜。

1 def mymax(x,y,z=10):
2     return max(x,y,z)
3 print mymax(5,6)
4 print mymax(5,6,7)
5 输出:
6 >>10
7 >>7

2.1.2动态形参

上面已经说了,形参是实参的傀儡,动态形参对应的实参可能不止一个对象。为什么要这么设置,刚刚说了,因为懒嘛。看看下面就知道了

*args-->tuple

一个*加一个名字 的参数对应实际输入为一个元组类型的参数

1 def sum(*args):
2     sum = 0
3     for i in args:
4         sum += i
5     return sum
6 print sum(1,2,3,4,99)
7 输出:
8 >>109    

**args-->dict
两个*加一个名字 的参数对应实际输入为一个字典类型的参数

1 def studensInfo(**kwargs):
2     return kwargs.keys(),kwargs.values()
3 print studensInfo(name = 'alex',sex = 'male')
4 输出:
5 >>(['name', 'sex'], ['alex', 'male'])
1 def func(a,b,c):
2     print a,b,c
3 dict1 = {'a':1,'b':2,'c':3}
4 func(**dict1) # 得到value
5 func(*dict1) # 得到key,*dict1这的输入为一个元祖,元祖会根据参数的hash值排序(我好想记得网上有人说是根据hash值,具体得咱不去深究),所以输出为acb,而不是想象中的abc
6 输出:
7 >>1 2 3
8 >>a c b

总结:星元组星星字典

2.2实参

实参就是实际调用函数时候 传入的值

1 def sum(*args):
2     sum = 0
3     for i in args:
4         sum += i
5     return sum
6 print sum(1,2,3,4,99)    

这里的“1,2,3,4,99”就是元组类型的实参。

1 def studensInfo(**kwargs):
2     return kwargs.keys(),kwargs.values()
3 print studensInfo(name = 'alex',sex = 'male')

这里的“name = 'alex',sex = 'male'”就是字典类型的实参。


对于这些乱七八糟的参数可以使用下图概括,原图来自网络,侵删。

三、返回值

返回值就是函数功能实现完了之后,需要返回的一个参数。可以不需要,但是得记住,优秀程序员都喜欢返回值
关键字:return
return后面的参数就是返回值
需要知道的:
1:一个函数要么没有返回值,要么只有一个返回值,不可能有多个返回值
2:函数执行到return后,整个函数就结束了,哪怕后面有金子银子也不去捡了
3:即使你程序中没有写返回值,程序结束后也会自动返回一个None,相当于C语言中的NULL

1 def myMax(a,b):
2     if a>b:
3         return a
4     else:
5         return b
6 print myMax(12,34)
7 输出:
8 >>34
1 #coding=utf-8
2 def myprint(a):
3     print a
4 myprint("脚让一让")#这个函数就是脱了裤子打屁,根本没有任何意义。
5 输出:
6 >>脚让一让

 

posted on 2018-09-26 22:05  脚让一让  阅读(214)  评论(0编辑  收藏  举报

导航