• python基础06--变量与递归函数


    变量:

    局部变量:在子程序中定义的变量

    全局变量:在程序一开始定义的变量

    全局变量作用域是整个程序
    局部变量作用域是定义该变量的子程序。
    当全局变量与局部变量同名时:
    在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。
    所以我们写程序时,用大写表示全局变量,用小写表示局部变量
     
    如果函数的内容无global关键字:
    1.有声明局部变量
    NAME="小仙女"
    def test1():
        NAME="小可爱"
        print("我是",NAME)
    test1()
    View Code

    2.无声明局部变量

    NAME="小仙女"
    def test1():
        print("我是",NAME)
    test1()
    View Code

    如果函数的内容有global关键字

    1.有声明局部变量

    NAME="小仙女"
    def test1():
        global NAME
        NAME="小可爱"
        print("我是",NAME)
    test1()
    View Code

    2.无声明局部变量

    NAME="小仙女"
    def test1():
        global NAME
        print("我是",NAME)
    test1()
    View Code

    前向引用:函数即变量

    正确的例子:

    def action():
        print ('in the action')
        logger()
    def logger():
         print ('in the logger')
    action()
    View Code
    def logger():
        print ('in the logger')
    def action():
        print('in the action')
        logger()
    View Code

    嵌套函数与作用域:

    嵌套函数(注意执行的顺序)

    name="alex"
    def name1():
        name="baby"
        def name2():
            name="vera"
            print(name)
        name2()
        print(name)
    name1()
    print(name)
    View Code

    作用域

    name='alex'
    def name1():
        name="baby"
        def name2():
            print(name)
        return name2()
    test=name1()
    View Code

    递归函数:

    def calc(n):
        print(n)
        if int(n/2) ==0:
            return n
        return calc(n/2)
    
    calc(10)
    View Code

    特征:

    1. 必须有一个明确的结束条件

    2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少

    3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)

  • 相关阅读:
    Python安装
    php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法
    关闭sublime自动检测更新提示
    Linux系统基本命令操作汇总
    jQuery各版本CDN
    【分享】每个 Web 开发者在 2021 年必须拥有 15 个 VSCode 扩展
    React & Redux 实战 Reminder Pro 项目 免费视频教程(5 个视频)
    Redux 入门教程(React 进阶)(20 个视频)
    Nodejs + Express + MongoDB 基础篇(17 个视频)
    轻松学 nodejs
  • 原文地址:https://www.cnblogs.com/sakura-gyt/p/12700933.html
Copyright © 2020-2023  润新知