• 【Python】八、函数的使用



    实验目的

    1. 掌握函数的定义和调用;
    2. 掌握函数的用法;
    3. 理解递归;
    4. 培养学生动手查阅资料能力和解决实际问题的能力和团队合作能力。

    一、定义函数

           在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
    定义函数的三种形式:
    一、无参函数
           定义函数时参数是函数体接收外部传值的一种媒介,其实就是一个变量名
           在函数阶段括号内没有参数,称为无参函数。需要注意的是:定义时无参,意味着调用时也无需传入参数。
           如果函数体代码逻辑不需要依赖外部传入的值,必须得定义成无参函数。

    def func():
        print('hello nick')
        
    func()  # hello nick
    
    • 1
    • 2
    • 3
    • 4

    二、有参函数
           在函数定义阶段括号内有参数,称为有参函数。需要注意的是:定义时有参,意味着调用时也必须传入参数。
           如果函数体代码逻辑需要依赖外部传入的值,必须得定义成有参函数。

    def sum_self(x, y):
        """求和"""
        res = x+y
       print(res)
    
    sum_self(1,2)  # 3
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    三、空函数
           当你只知道你需要实现某个功能,但不知道该如何用代码实现时,你可以暂时写个空函数,然后先实现其他的功能。

    def func():
        Pass
    
    • 1
    • 2

    二、调用函数

           和C++一样,Python中函数的定义必须在调用的前面,但是在函数的内部调用一个函数,不用考虑函数的顺序,只要被调用的函数被定义了即可。
    一、先定义后,后调用为一般方法:

    def  add_test(a,b):
            return a+b
    result  =  add_test(1,2)
    print(result)
    
    • 1
    • 2
    • 3
    • 4

    二、可以在函数内部调用后面的函数

    def add_1(a,b):
        return add_2(a,b)   #函数内部调用add_2
    def add_2(a,b):
        return a+b
    print ('add_1的调用:',add_1(1,2))   #3
    print('add_2的调用:',add_2(2,3))    #5
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    三、不可以先调用后定义

    print("add的调用",add(a,b))
    def  add(a,b):
            return a+b
    
    • 1
    • 2
    • 3

    三、参数的传递和函数的返回值

    函数:封装功能独立的代码,在需要时通过函数名被调用
    参数:外界希望在函数内部处理的数据
    a、位置参数:
    实参的位置和形参保持一致,按形参声明的先后顺序一一赋值。
    b、关键字参数:
    调用函数的时候以 形参=实参的方式来传参,这个时候实参的顺序无所谓

    函数根据有无参数和返回值,可以相互结合,共有4种组合形式

    1.无参数,无返回值
    2.无参数,有返回值
    3.有参数,无返回值
    4.有参数,有返回值
    
    • 1
    • 2
    • 3
    • 4

    1、什么是返回值
    a、返回值就是函数调用表达式的值,就是return关键字后面的表达式的值。返回值就是将函数里面的数据传递到函数外面。
    b、Python中每个函数都有返回值,默认是None,如果遇到return ,return 后面是什么返回值就是什么。
    return功能
    确定函数的返回值
    结束函数,执行时遇到return,函数直接结束,并且将return后面的值作为函数返回值。

    2、多个返回值
    return 值1, 值2, 值3… 相当于返回一个元祖

    def fun3():
        return 1, 2, 3
    
    fun3()
    print(type(fun3()))
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3、怎么确定函数是否需要返回值
    函数执行完成后是否产生新的数据,如果产生新的数据就将这个数据用return返回。


    四、编写函数,输入不同的参数,绘制不同的科赫曲线

    参考代码

    import turtle  # 引入决解问题需要的工具——turtle作图包
    
    
    # 定义turtle画笔和画布的参数
    def huabi(i, h):
        if i == 6:
            turtle.pencolor('red')
            turtle.speed(0)  # speed()参数有[0,10]:“0”特殊、代表最快速度,其余[1,10]值越大、速度越快
        elif i == 5:
            turtle.pencolor('blue')
            turtle.speed(10)
        elif i == 4:
            turtle.pencolor('purple')
            turtle.speed(8)
        elif i == 3:
            turtle.pencolor('pink')
            turtle.speed(6)
        elif i == 2:
            turtle.pencolor('green')
            turtle.speed(4)
        else:
            turtle.speed(2)
        turtle.pensize(2)  # 设置画笔宽度为2
        turtle.setup(800, 1200, 100,
                     10)  # setup()参数有4个:前两个代表画布的“宽”和“高”,当数值为整数时、表示绝对像素大小,当小数时、表示站屏幕的比例。后两个可以省略,默认为屏幕中心位置,代表距离“屏幕左上角”的距离,单位是像素密度,
        turtle.penup()  # 抬起画笔,之后的画笔动作、就不会产生图线
        turtle.goto(-300, h)  # 以画布中心点为坐标原点(0,0),将画笔移动到坐标(-300,100)处
        turtle.pendown()  # 落下画笔,以便画图
    
    
    # 定义“尖”
    def koch(size, n):
        if n == 0:  # 0阶的科赫雪花曲线就是一条线,大小为输入的“size”
            turtle.fd(size)
        else:  # 高阶科赫雪花曲线
            for i in [0, 60, -120, 60]:  # turtle在“尖”的四条线上改变的角度,分别为0°,60°,-120°,60°
                turtle.left(i)  # 对应上边四个角度,一共需要转4次弯,画出本阶的四条线,
                koch(size / 3, n - 1)  # 每个角度下的一个边,对应低一阶的客户雪花曲线的“尖”;至此完成函数本身的循环和复用,自动画出一个完整的n阶“尖”
    
    
    # 定义main()主函数
    def main():  # 设定参数接口
        size = int(input("请输入尺寸:"))
        h=int(input("请输入高:"))
        for i in range(1, 7):
            h = h - 150
            huabi(i, h)
            koch(size, i)
    
    main()  # 在设定参数之后,调用主函数
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    实验截图

    在这里插入图片描述


  • 相关阅读:
    Android 实现三维空间坐标系(WebView与JS交互,支持多条曲线,可设置坐标轴翻转等)
    前端编写一个express实现项目部署上线流程
    50 二叉树中的最大路径和
    【如何学习CAN总线测试】——节点管理测试
    初中数学三角函数
    YOLOV7 教程之将 YOLOV7 转换为 TensorFlow Lite 以进行移动部署
    SQL基本语句练习
    Java开发琐碎语法(长期更新)
    websocket
    canvas制作签名版
  • 原文地址:https://blog.csdn.net/pdsu_Zhe/article/details/128088775