美文网首页
廖雪峰 | 3.0 函数

廖雪峰 | 3.0 函数

作者: 苦哈哈的柠檬水 | 来源:发表于2022-04-13 21:07 被阅读0次

    1 调用函数

    2 定义函数

    3 函数的参数

    4 递归函数

    1 调用函数

    1,使用函数时,需要知道函数的名称和参数
    2,help(函数名称)查看函数的帮助信息

    help(abs)
    

    3,将函数名赋给一个变量,相当于给这个函数起了一个“别名”

    >>> a = abs # 变量a指向abs函数
    >>> a(-1) # 所以也可以通过a调用abs函数
    1
    

    2 定义函数

    1,自定义函数:def语句+函数名+括号+参数+:;用函数的返回值用return语句

    # -*- coding: utf-8 -*-
    def my_abs(x):
        if x >= 0:
            return x
        else:
            return -x
    >>> my_abs(-9)
    9
    

    2,自定义函数的使用
    如果将my_abs()的函数定义保存为abstest.py文件,可以在该文件的当前目录下启动Python解释器,用from abstest import my_abs来导入my_abs()函数,注意abstest是文件名(不含.py扩展名):

    >>> from abstest import my_abs
    >>> my_abs(-8)
    8
    

    3,定义空函数:用pass语句
    pass作为占位符,如现在还没想好怎么写函数的代码,可以先放一个pass,让代码能运行起来。

    def nop():
        pass
    

    pass还可以用在其他语句里,比如:

    if age >= 18:
        pass
    

    4,参数类型做检查:isinstance()函数

    def my_abs(x):
        if not isinstance(x, (int, float)):
            raise TypeError('bad operand type')
        if x >= 0:
            return x
        else:
            return -x
    #测试
    >>> my_abs('A')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 3, in my_abs
    TypeError: bad operand type
    

    5,练习题

    • 问:请定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程ax^2+bx+c=0 的两个解。
    • 答:
    # -*- coding: utf-8 -*-
    import math
    def quadratic(a, b, c):
        if not (isinstance(a,(int,float)) and isinstance(b,(int,float)) and isinstance(c,(int,float))) :
            raise TypeError('bad operand type')
        if a == 0:
            x = -(c/b)
            return x
        elif b**2-4*a*c >= 0:
            x1 = (-b+math.sqrt(b**2-4*a*c))/(2*a)
            x2 = (-b-math.sqrt(b**2-4*a*c))/(2*a)
            return x1,x2
        else:
            print('无实数解')
            return None
    # 测试:
    print('quadratic(2, 3, 1) =', quadratic(2, 3, 1))
    print('quadratic(1, 3, -4) =', quadratic(1, 3, -4))
    
    if quadratic(2, 3, 1) != (-0.5, -1.0):
        print('测试失败')
    elif quadratic(1, 3, -4) != (1.0, -4.0):
        print('测试失败')
    else:
        print('测试成功')
    

    相关文章

      网友评论

          本文标题:廖雪峰 | 3.0 函数

          本文链接:https://www.haomeiwen.com/subject/dcevsrtx.html