zoukankan      html  css  js  c++  java
  • 变量与递归函数

     全局变量:作用域很大,整个代码内部都有效。局部变量可以使用global关键字将全局变量进行修改。

    局部变量:只在有限的区域内起作用,局部变量是定义在函数内部的,外面要用局部变量,只能return。

    只有函数才能将变量私有化。

    如果 函数的内部无global关键字,优先读取局部变量,如果没有局部变量, 则在函数内部只能读取全局变量,但不能进重新赋值。但对于可变类型,可以对内部元素进行操作,如列表.append()方法。

    如果函数中有global关键字,变量本质上就是全局的那个变量,可以进行重新赋值。

    以下是一个错误实例:从中得出的结论就是将global关键字放在函数最前面。

    以下方法就是正确的:意味着将全局变量重新赋值为“自己“”

    全局变量变量名大写,局部变量变量名用小写,这样可以避免因为变量名同名造成的错误。

    函数可以进行嵌套。

    变量中使用的关键字有global和nonlocal,global指代全局变量,而nonlocal指代上一级变量。

     运行结果为:

     

    name="张亚萍"
    def fun():
    name="冯振纹"
    def fun2():
    nonlocal name
    name="很好"
    fun2()
    print(name)
    print(name)
    fun()
    print(name)
    运行结果为

    前向引用:

    def fun():
    name="zhangyaping"
    print(name)
    fun2()
    fun()
    def fun2():
    name="feng"
    print(name) 程序将会报错,因为在调用的时候fun2()没有被加载。

    风湿理论:函数即变量。必须记住这句话,函数在没有调用前不会被执行,只会加载。

    函数递归:

    在函数内部,可以调用其他函数,如果在一个函数内部自己调用自己,则称为函数的递归调用。

    递归特性:

    1.必须有明确的结束条件,return可以终结程序。

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

    3.递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈这种数据结构实现的,每当进入一个函数调用,

    栈就会增加一层栈帧,每当函数返回,栈就会减少一层栈帧,由于栈的大小是无限的,所以,递归调用的次数过多,会导致栈溢出)

    函数递归补充:

    
    
  • 相关阅读:
    墙奸有感
    关于ubuntu里的fcitx
    Ubuntu 9.10 ati HD 3470 显卡驱动 搞定
    XP与Ubuntu双系统的问题
    invalid conversion from ‘__pthread_t*’ to ‘pid_t’
    Julian Day
    m的n次幂的求法
    Sublime Text 2
    在虚拟机Virtualbox安装Win8消费者版
    记一个循环的错误
  • 原文地址:https://www.cnblogs.com/zypfzw/p/9079746.html
Copyright © 2011-2022 走看看