功能介绍
函数function(或者称为方法method,当然,严格来说,这两者也有区别,不过我们一般认为两者等价),可能和数学中的函数如y = 2x+1的形式相差甚远,但是归根到底,两者有着非常深的内部关联,它们都是逻辑处理的集合,实现某种逻辑,函数的声明可以概括为三要素,方法名,参数,返回值。当然,必不可少的就是方法体,当然方法名可以为空,那就是匿名函数,返回值也可以为空,那就是不返回,参数也可以为空,也可以是多个参数,参数的多少没有特殊的限制,但是一般我们开发时会限制,避免传递过多的参数导致程序复杂化,对应到刚才数学中的函数的例子y = 2x+1来说,参数是x,方法体是return 2x+1,返回值就是y了,也就是2x+1。
使用说明
我们接刚才的例子,使用python写一个函数,y=2x+1
def liner_fun(x:int):return 2*x+1#def 为python定义函数的关键字#此函数的名字为liner_fun#该函数只有一个参数x,参数的类型是int#函数处理的逻辑为2*x+1,为了便于其他代码调用该方法,需要将值返回y = liner_fun(10)print(y) #21#此处print()就是一个系统级别的函数,实现的逻辑功能就是将内容打印到控制台
函数名
对于以上例子中显式制定了函数的名字liner_fun,有些情况下,我们可能不需要该函数有名字(当然,函数有名字肯定没问题),简化代码量等,这时候就需要引出匿名函数,如下
#语法 lambda 参数1,参数2,...,参数n:表达式s = lambda x:2*x+1print(s(10)) #21
参数
参数在Python3.6后引入了type hint(类型提示),即在python动态语言的框架下,增加了类型的提示
def liner_fun(x:int): #有type hint ,即x的类型需要是intreturn 2*x+1def liner_fun(x): #没有type hintreturn 2*x+1
默认参数
有些时候我们在调用方法传递参数时,有些参数大多数情况下可以是一个默认值,如果该参数有默认值,那么我们便可以不用传递,节省开发工作量
def calc(x=2,y=10): #参数x的默认值是2,y的默认值是10return x+yprint(calc()) #12print(calc(6)) #16print(calc(y=6)) #8print(calc(1,2))#3
可变参数
有时,我们对于参数的长度不确定,比如说工作一周内每天的完成工件,可以通过可变参数的形式来实现对于不定长参数的控制
def calc(*x): #在参数前增加*即表示为可变参数,本质是一个数组sum =0for i in x:sum+=ireturn sumprint(calc(1,2,3,4,5))#关键字传递实参数量不定时,也能进行处理,如果形参列表的最后一个形参前缀为"**",那么所有多余的关键字传递实参将会被收入一个字典对象中def example_func(x,y,**other):print('others{0}'.format(list(other.keys())))for k in other.keys():print(k)example_func(1,y="22",foo=2,bar=5)#打印如下内容
others[‘foo’, ‘bar’]
foo
bar
Tips:
练习题
实现如下函数
- n=0,1,2时返回n,其他大于零的情况返回值等于n-1的返回值和n-2的返回值之和
- 某工厂车辆的初始速度一般为10公里每小时,加速度统一为5公里每小时,使用函数根据不同的初始速度,计算判断发动后某时点的时速
- 编写一个匿名函数,实现将传入的手机号字符串中间四位星号展示
