Python函数之简单总结
函数的定义
Python的函数定义使用关键字def,如定义一个返回绝对值的函数my_abs
def my_abs(x): if x>=0: return x else: return -x
函数调用
参数错误
如果在调用函数时,传给函数的参数增多或减少,python解释器都会检查出来
TypeError:提示my_abs只需一个参数,但是调用时给了两个
虽然python解释器能检查到参数个数的变化,但当给函数一个非法类型的参数时,就无法准确检测到
解释器虽然给出了错误,但是没有定义具体是哪种错误
参数类型检查
python提供了内置函数isinstance来判断参数的数据类型
def my_abs(x): if not isinstance(x, (int, float)): raise TypeError('wrong type......') if x >= 0: return x else: return -x
改写了my_abs函数后,如果传参不是int或float类型,则会报错并给出错误信息'wrong type'
函数的参数
python的函数定义虽然相对简单,但是参数种类非常灵活。如正常的必须参数,还有默认参数、可变参数以及关键字参数
位置参数
即必须参数,在传参时按照函数定义的顺序赋给函数
def power(x, n): s = 1 while n > 0: n = n - 1 s = s * x return s
定义一个函数power来求x的n次方,在调用时根据函数定义的顺序传参。不同的位置顺序得到不同的结果
默认参数
同其他编程语言一样,python在定义函数时可通过设置默认参数来避免因某些参数没有传入而导致的错误
如power(x, n),如果没有传入参数n则会引起错误
解释器提示power缺少一个必须的参数n。来使用默认参数来改进一下power函数
def power(x, n=2): s = 1 while n > 0: n = n - 1 s = s * x return s
两种形式的函数调用都能正常运行,这正是因为默认函数的作用。当参数都给全时,函数按照给定的参数进行运算;当参数n未传入时,函数按照设置的默认参数进行运算
可变参数
可变参数即参数的个数是可变的,在定义函数时,无需一个一个的给定
def add(*numbers): sum = 0 for n in numbers: sum = sum + n return sum
定义一个add函数用来计算参数的和
通过可变参数,我们可以传入任意个参数来调用函数进行运算
关键字参数
不同于可变参数,关键字参数允许传入0或任意个含参数名的参数,这些关键字参数在函数内部自动组合成dict
def student(name, age, **args): print('name: ', name, 'age: ', age, 'other: ', args)
**args:代表传入的是关键字参数
命名关键字参数
上述student函数可以接收除name,age外的任意参数,但是如果需要限制接收的参数就要用到命名关键字参数
假设对于student信息还只需要一个city信息,可以改写student函数如下
def student(name, age, *, city): print(name, age, city)
运行结果如下
命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错
函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了,如
def student(name, age, *args, city): print(name, age, args, city)学好python你需要一个良好的环境,一个优质的开发交流群,群里都是那种相互帮助的人才是可以的,我有建立一个python学习交流群,在群里我们相互帮助,相互关心,相互分享内容,这样出问题帮助你的人就比较多,群号是301,还有056,最后是051,这样就可以找到大神聚合的群,如果你只愿意别人帮助你,不愿意分享或者帮助别人,那就请不要加了,你把你会的告诉别人这是一种分享。
学习是对自己最好的投资,而机会属于有准备的人,这是一个看脸的时代,但最终拼的是实力。人和人之间的差距不在于智商,而在于如何利用业余时间,所以没有等出来的辉煌,只有干出来的精彩。其实只要你想学习,什么时候开始都不晚,不要担心这担心那,你只需努力,剩下的交给时间,而你之所以还没有变强,只因你还不够努力,要记得付出不亚于任何人的努力。
你的想法再精彩,那是想法的价值
而你的价值,永远体现在行动之中
如果还停留在想的价值中,请赶快行动,
如果你学习还停止在原处,请咨询我帮助你开始