【Python】7“函数定义和使用“

本文详细介绍了Python中函数的定义方法,包括关键字def的使用、空函数的概念、参数检查及自定义错误信息的方法。此外,还讲解了如何返回多个值,并提供了一道解一元二次方程的函数练习题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数

  • 定义函数
    def是定义函数的关键字,定义函数的过程如下:

    def 函数名(参数):
        return 参数
  • 空函数
    教程里提到这个知识点“空函数”,也就是什么都不做的函数,使用到一个关键字 pass,它的意思是什么也不做,但代码也能运行。也可以看做是一个占位符,比如一段代码,还没有想好怎去写,这时候就可以在这个位置写上pass,可以让代码先运行起来。

    def nop():
        pass
  • 参数检查
    参数检查的作用在于,能控制用户传入函数的参数,并做出响应。
    比如说一个做加法运算的函数,基本功能是需要传入两个int型参数,但是用户如果传入的是非int型,那么会报Python内置的错误。
    使用参数检查,能限制参数类型,自定义错误信息,让函数调用者更清楚报错原因。
>>> def myabs(x):
...     if not isinstance(x,(int,float)):
...         raise TypeError('bad operand type')
...     if x >= 0:
...         return x
...     else:
...         return -x

做参数检查后,调用这个函数者就只能传入int和float,否则就会报自定义的错误信息:bad operand type

  • 返回多个值
    我们先来看看返回多个值的代码:(这个代码是教程里的案例)
def move(x,y,step,angle=0):
...     nx = x + step * math.cos(angle)
...     ny = y + step * math.sin(angle)
...     return nx,ny

然后我调用这个函数,并用两个变量接收,然后打印出来:

>>> x,y = move(100,100,60,math.pi / 6)
>>> print(x,y)
151.96152422706632 130.0

△ 值得注意的是,其实用一个变量去接收也可以,因为这种多个返回值的函数返回值的本质是tuple类型:

>>> r = move(100,100,60,math.pi / 6)
>>> print(r)
(151.96152422706632, 130.0)

函数练习题

写一个解一元二次方程的函数
开平方根函数math.sqrt(x), 需要导入math包import math
解题思路:
1. 计算判别式△=2b-4ac的值
2. 根据△的结果判断一元二次方法有无根
3. 有根的情况下将abc的值代入求根公式x=[-b±(b^2-4ac)^(1/2)]/2a

def myQuadratic(a,b,c):
    for i in [a,b,c]:
        if not isinstance(i,(int,float)):
            raise TypeError('bad poerand type',i)
    m = b * b - 4 * a * c
    if m < 0:
        return '此方程无解!'
    elif m == 0:
        x1 = x2 = -b / 2 * a
        print('此方程有2个相同的实根:')
    elif m > 0:
        x1 = (-b + math.sqrt(m)) / 2 * a
        x2 = (-b - math.sqrt(m)) / 2 * a
        print('此方程有2个不同的实根:')
    return x1 , x2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值