美文网首页
day008 笔记 07-25

day008 笔记 07-25

作者: Yehao_ | 来源:发表于2018-07-25 17:09 被阅读0次

    函数的调用:
    a. 先回到函数调用的位置
    b. 用实参给形参赋值(传参)
    c. 执行函数体
    d. 执行完函数体,将返回值返回给函数调用表达式
    e. 回到函数调用的位置

    2.return关键字

    a.将return后面的值,返回给函数表达式 可以有多个返回值 返回值组成一个元组
    b.结束函数

    3.函数调用表达式

    python中的每个函数调用表达式都是有值的

    3.函数的结束:

    a.函数体执行完
    b.遇到return

    global和nonlocal
    当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了。

    def glb_demo():
    global var # 需要使用 global 关键字声明
    var = 10

    要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字

    4.匿名函数

    匿名函数:本质函数函数,以另一种简单的方式来声明
    lambda 参数列表: 返回值 --> 结果是一个函数变量

    5.递归函数

    递归函数:在函数体中调用函数本身

    理论上循环能做的事情,递归都可以

    怎么写一个递归函数:
    a.找临界值(跳出循环 -> return)
    b.找关系:假设当前函数对应的功能已经实现,找到f(n)和f(n-1)的关系
    c.使用f(n-1)与前面找到的关系去实现f(n)的功能

    对递归的要求:能不用就不用
    函数调用的过程是一个压栈的过程(每调用一次函数,系统都为其分配内存空间,
    用来存储函数中声明的变量和参数等,这个内存会在函数调用结束后自动销毁)

    # 写一个递归函数:1+2+3+...+N
    
    # 循环:
    def my_sum1(n):
        sum1 = 0
        for i in range(n+1):
            sum1 += i
        return sum1
    
    # 递归
    def my_sum2(n):
        # 1.找到临界值
        if n == 1:
            return 1
        # 2.找到my_sum2(n)和my_sum2(n-1)的关系
        """
        my_sum2(n):1+2+3+...+(n-1)+n
        my_sum2(n-1):1+2+3+...+(n-1)
        """
        # 3.使用my_sum2(n-1)去实现my_sum2(n)的功能
        return my_sum2(n-1) + n
    
    print(my_sum1(5))
    print(my_sum2(5))
    
    
    Output:
    15
    15
    
    # # 使用递归实现
    # n = 4
    # ****
    # ***
    # **
    # *
    # n = 3
    # ***
    # **
    # *
    
    # 关系:先打印n个*,再打印f(n-1)
    def print_shape(n):
        char = '*'
        if n == 1:
            print(char*n)
            return None
        print(char*n)
        print_shape(n-1)
    
    print_shape(4)
    
    def print_shape_reverse(n):
        char = '*'
        if n == 1:
            print(char*n)
            return None
        print_shape_reverse(n-1)
        print(char*n)
    
    print_shape_reverse(4)
    

    相关文章

      网友评论

          本文标题:day008 笔记 07-25

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