设为首页 收藏本站
查看: 1219|回复: 0

[经验分享] Python函数之简单总结

[复制链接]

尚未签到

发表于 2018-8-14 09:40:35 | 显示全部楼层 |阅读模式
函数的定义
  Python的函数定义使用关键字def,如定义一个返回绝对值的函数my_abs
12345def my_abs(x):    if x>=0:        return x    else:        return -x函数调用
DSC0000.png

参数错误
  如果在调用函数时,传给函数的参数增多或减少,python解释器都会检查出来
DSC0001.png

  TypeError:提示my_abs()只需一个参数,但是调用时给了两个
  虽然python解释器能检查到参数个数的变化,但当给函数一个非法类型的参数时,就无法准确检测到
DSC0002.png

  解释器虽然给出了错误,但是没有定义具体是哪种错误
参数类型检查
  python提供了内置函数isinstance()来判断参数的数据类型
1234567def 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'
DSC0003.png

函数的参数
  python的函数定义虽然相对简单,但是参数种类非常灵活。如正常的必须参数,还有默认参数、可变参数以及关键字参数
位置参数
  即必须参数,在传参时按照函数定义的顺序赋给函数
123456def power(x, n):    s = 1    while n > 0:        n = n - 1        s = s * x    return s  定义一个函数power()来求x的n次方,在调用时根据函数定义的顺序传参。不同的位置顺序得到不同的结果
DSC0004.png

默认参数
  同其他编程语言一样,python在定义函数时可通过设置默认参数来避免因某些参数没有传入而导致的错误
  如power(x, n),如果没有传入参数n则会引起错误
DSC0005.png

  解释器提示power()缺少一个必须的参数n。来使用默认参数来改进一下power函数
123456def power(x, n=2):    s = 1    while n > 0:        n = n - 1        s = s * x    return s
DSC0006.png

  两种形式的函数调用都能正常运行,这正是因为默认函数的作用。当参数都给全时,函数按照给定的参数进行运算;当参数n未传入时,函数按照设置的默认参数进行运算
可变参数
  可变参数即参数的个数是可变的,在定义函数时,无需一个一个的给定
12345def add(*numbers):    sum = 0    for n in numbers:        sum = sum + n    return sum  定义一个add函数用来计算参数的和
DSC0007.png

  通过可变参数,我们可以传入任意个参数来调用函数进行运算
关键字参数
  不同于可变参数,关键字参数允许传入0或任意个含参数名的参数,这些关键字参数在函数内部自动组合成dict
12def student(name, age, **args):    print('name: ', name, 'age: ', age, 'other: ', args)  **args:代表传入的是关键字参数
DSC0008.png

命名关键字参数
  上述student函数可以接收除name,age外的任意参数,但是如果需要限制接收的参数就要用到命名关键字参数
  假设对于student信息还只需要一个city信息,可以改写student函数如下
12def student(name, age, *, city):    print(name, age, city)  运行结果如下
DSC0009.png

  命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错
DSC00010.png

  函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了,如
12def student(name, age, *args, city):    print(name, age, args, city)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-551474-1-1.html 上篇帖子: python学习之文件创建写入程序 下篇帖子: Python学习之对象基础
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表