Python学习细节总结以及python与c语言区别比较(2)

本文介绍了Python中函数的使用,包括错误处理、参数检查、默认参数、可变参数、关键字参数和命名关键字参数的详细说明。此外,还讨论了如何防止递归函数导致的栈溢出问题,并通过尾递归优化进行解决。最后提到了Python中变量赋值的特性。
摘要由CSDN通过智能技术生成

        本文python学习基于廖雪峰老师的学习网站:字符串和编码 - 廖雪峰的官方网站 (liaoxuefeng.com),其内容相对完整,适合初学者学习。由于楼主之前有c语言的学习经验,在此本文仅对其中与c语言相差比较大的部分进行总结回顾,如有纰漏还请指出。

        前接:Python学习细节总结以及python与c语言区别比较(1)

5.函数

        python内部贴心的设置了错误判断,在函数中如果传入的参数数量不对或参数类型不能被函数所接受,则会弹出TypeError的错误,除此以外,如果你的网络出现问题,服务器传输资源超载或者文件权限设置错误,则会弹出INTERNAL_SERVER_ERROR。我们可以通过isinstance()来检查数据类型,如

 if not isinstance(x, (int, float)):
    raise TypeError('bad operand type')

       这样会在x不是int或float类型时弹出TypeError:bad operand type。

        在python中定义一个函数要用def(),依次写出函数名、括号、括号中的参数和冒号,然后,在缩进块中编写函数体,函数的返回值用return语句返回。如果没有return语句,程序执行完毕后返回None。如果你将zzz()函数定义保存在了xxx.py文件中,你可以用代码from xxx import zzz来导入函数定义。

        我们也可以定义一个空函数,即函数体内为pass,即函数内部无内容来作为一个函数的占位符,使你在函数还没想好的时候能运行代码。

        函数可以返回多个值,但其实就是一个tuple。

        我们也可以定义一个默认参数,使得函数内部部分值固定不变,但定义默认参数时一定要指向不变对象或者不轻易改动的参数,否则默认参数可能会出现重复输入的情况。

        同样的我们也可以定义一个可变参数,它和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号,这样在输入参数不确定的情况下,使其在函数内部接收到的是一个tuple。同样我们也可以在list或tuple前加一个 号,把list或tuple的元素变成可变参数传进去。

        我们在函数中可以定义一个关键字参数,即在需要的list或tuple前加 **,如person(name,age,**kw),从而使这个参数变成可选任意个输入的参数,即这部分可以不进行输入。同时如果要限制关键字参数的名字,就可以用命名关键字参数,如

def person(name, age, *, city, job):
    print(name, age, city, job)

        运用 *, 使person函数只接受job、city作为关键字参数,如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符 * 了,在输入参数的时候必须输入参数名,除非命名关键字参数已为默认参数否则会报错。

        在使用递归函数时要防止栈溢出,即不要让函数递归次数过多(类似于越界),否则系统将无法处理并报错,我们可以通过尾递归优化的方式,即在递归函数外套用一个函数如

def fact(n):
    return fact_iter(n, 1)

def fact_iter(num, product):
    if num == 1:
        return product
    return fact_iter(num - 1, num * product)

来减少栈溢出的影响。(由于Python标准的解释器没有针对尾递归做优化,任何递归函数都存在栈溢出的问题。)

        在python中,如果对多个变量进行赋值,比如a,b=b,a+b,实质是t=(b,a+b),a=t[0],b=t[1],但不必显式写出临时变量t就可以赋值。

后接:Python学习细节总结以及python与c语言区别比较(3)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值