python之函数整理
函数是什么?
函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的。编程中的函数在英文中也有很多不同的叫法。在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java里面叫做method。
定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可
特性:
- 减少重复代码(重复的代码可以通过一个函数实现)
- 使程序变的可扩展
- 使程序变得易维护(修改部分功能可以通过修改函数来实现)
函数的基本格式:
def test(x,y,z): print(x) print(y) print(z)
如上,这就是在python中的基本定义方法:def 是定义函数的基本格式,test是这里的函数名,:下面的内容就是具体要实现的功能。
这个时候我们再来讨论一下函数括号里面的东西,我们叫它们为参数。像test(x,y,z)中的x,y,z我们称之为形式参数,当我们给它们赋值,比如x=1之后,1就是实际参数。
关于一些参数的补充:
def test(x,y,z): print(x) print(y) print(z) test(1,2)#位置参数 test(y=1,x=2)#关键字参数 #test(2,y=3,6)这里是错误的,关键字参数必须写在位置参数的后面
默认参数:调用函数时,默认函数非必须传递(用于定义函数,为参数提供默认值,调用函数时可传可不传该默认参数的值)
函数的返回值:
def fun1(): '''函数''' print("in the func1") return 0 def fun2(): '''过程''' print("in the func2")
在fun1中最后一行return 0 ,所以这个函数的返回值是0
而在fun2中,我们没有写返回值,但是不代表它没有返回值,在PYTHON中此时的返回值是None。
当然我们的返回值不只是数字或者字符串,也可返回一些变量的内存地址。
关键字参数:
def test(name,age=22,*args,**kwargs): print(name) print(age) print(args) print(kwargs) test('周栩强',11,22,sex='man')
在这里,*args参数传入数据之后,以元组的形式保存。**kwargs则是以字典的形式保存。
这里我们要注意的是
#**kwargs:用于接受关键字参数,不能接受位置参数
而*args则刚好相反