zoukankan      html  css  js  c++  java
  • Python学习-局部变量和全局变量以及递归

    一、变量

    局部变量就是有一个小作用域的变量,在子程序中定义的变量,为局部变量。通常在函数中存在。if和for中的不是

    全局变量是在整个程序的最上方声明。除了字符串和整数不能在局部中更改,列表、字典可以在局部进行更改。

    切记不要改全局的字符串和整数的变量。(可以用global声明来改)

    在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
    全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
    当全局变量与局部变量同名时:
    在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。

    二、递归

    在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

    递归要求/特性:

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

    2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少;传递的数据一定要变少

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

    递归最多的深度是999次

    三、高阶函数

    变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

     1 def devi(n):
     2   #  print('devision')
     3     n = n/2
     4     return n
     5 
     6 def mulcal(a, b, f):
     7     k = a + b
     8     return f, k
     9 
    10 
    11 a = 1
    12 b = 2
    13 res = mulcal(a, b, devi(int(a+b)))  #这样就可以实现一个高阶的函数,尤其是往里面添加参数
    14 print(res)
  • 相关阅读:
    Samba 4.0 RC3 发布
    SymmetricDS 3.1.7 发布,数据同步和复制
    Express.js 3.0 发布,Node.js 的高性能封装
    GIFLIB 5.0.1 发布,C语言的GIF处理库
    jQuery UI 1.9.1 发布
    SVN Access Manager 0.5.5.14 发布 SVN 管理工具
    DynamicReports 3.0.3 发布 Java 报表工具
    HttpComponents HttpClient 4.2.2 GA 发布
    AppCan 2.0 正式发布,推移动应用云服务
    Ruby 2.0 的新功能已经冻结
  • 原文地址:https://www.cnblogs.com/Ian-learning/p/7860352.html
Copyright © 2011-2022 走看看