• 中文
    • English
  • 注册
  • 查看作者
  • 第九章:调用函数、定义函数

    一.  调用函数

    1. abs():求绝对值

    2. max():求最大值

    3. min():求最小值

    4. int():将其他数据类型转换为整型

    5. float():将其他数据类型转换为浮点型

    6. bool():将其他数据类型转换为布尔型

    7. str():将其他数据类型转换为字符型

    8. isinstance():数据类型检查

    9. 函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”

    a = -1
    print(abs(a)) #1
    
    a = (1,2,3)
    print(max(a))   #3
    
    print(min(1,2,3))   #1
    
    
    print(int("123")) #123
    print(int(12.3)) #12
    print(int(12.8)) #12
    print(float("12.3")) #12.3
    print(float(12)) #12.0
    print(str(123)) #123
    print(bool(1)) #True
    print(bool(0)) #False
    print(bool("adfda")) #True
    print(bool("false")) #True
    
    jia = abs # 注意没有()
    print(jia(-2)) #2
    
    print(isinstance(1,(int,float))) #True
    print(isinstance("1",(int,float))) #False

    二.  定义函数

    1. 除了调用Python内置的函数外,我们还可以编写自己定义的函数,比如手动实现一个abs函数:

    def jia_abs(x):
        if x >= 0:
            return x
        else:
            return -x
    
    print(jia_abs(-3)) # 3

    2. 如果某个函数还没想好要怎么实现,可以用pass函数将其设置为空函数

    def jia_abs(x):
        pass

    3. 调用函数时,如果参数个数不对,Python解释器会报TypeError错误,但如果是参数类型不对,Python无法帮我们检查

    def jia_abs(x):
        if x >= 0:
            return x
        else:
            return -x
    
    
    print(jia_abs(-3,2)) #TypeError: jia_abs() takes 1 positional argument but 2 were given
    print(jia_abs("-3")) # TypeError: '>=' not supported between instances of 'str' and 'int',和内置的abs报错不一样

    我们可以升级一下jia_abs这个函数,在函数内主动判断参数类型,并将其限制为只允许接受int和float类型的函数

    def jia_abs(x):
        if not isinstance(x,(int,float)):
            raise TypeError("类型错误")
        if x >= 0:
            return x
        else:
            return -x
    
    print(jia_abs("-3")) # TypeError: 类型错误

    4. 返回多个值

    我们可以在函数中,主动返回多个值

    def jia(x):
        return x,-x
    
    a,b=jia(1)
    print(a,b) #1,-1
    
    a = jia(1)
    print(a) #(1, -1),实际上jia返回的是一个tuple:(1,-1)

    三.  练习题

    请定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程 ax^2+bx+c=0的两个解

    import math
    def quadratic(a,b,c):
        return (-b+math.sqrt(pow(b,2)-4*a*c))/(2*a),(-b-math.sqrt(pow(b,2)-4*a*c))/(2*a)
    
    if quadratic(2, 3, 1) != (-0.5, -1.0):
        print('测试失败')
    elif quadratic(1, 3, -4) != (1.0, -4.0):
        print('测试失败')
    else:
        print('测试成功')

    参考资料

    [1] 廖雪峰-Python教程

  • 0
  • 2
  • 0
  • 1.4k
  • 请登录之后再进行评论

    登录
  • 0
    张甲49站长
    @☞R.L.Y☜ 你好
  • 0
    你好
  • 单栏布局 侧栏位置: