15.python变量,递归
Posted 星空月零
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了15.python变量,递归相关的知识,希望对你有一定的参考价值。
原文:https://www.cnblogs.com/linhaifeng/articles/6113086.html#_label6
# 如果函数的内容有global关键字 # - 有声明局部变量 # NAME = ["产品经理","廖波湿"] # def qupengfei(): # global NAME # NAME = "自己" # print(\'我要搞\', NAME) # qupengfei() # - 错误示例 # NAME = ["产品经理","廖波湿"] # def qupengfei(): # NAME = "自己" # global NAME # print(\'我要搞\', NAME) # qupengfei() # - 无声明局部变量 # NAME = ["产品经理","廖波湿"] # def qupengfei(): # global NAME # NAME = ["阿毛"] # NAME.append(\'XXOO\') # print(\'我要搞\', NAME) # qupengfei() ######## 全局变量变量名大写 ######## 局部变量变量名小写 # 优先读取局部变量,能读取全局变量,无法对全局变量重新赋值 NAME=“fff”, # 但是对于可变类型,可以对内部元素进行操作 # 如果函数中有global关键字,变量本质上就是全局的那个变量,可读取可赋值 NAME=“fff”
函数之间可以进行嵌套
NAME = \'海风\' def huangwei(): name = "黄伟" print(name) def liuyang(): name = "刘洋" print(name) def nulige(): name = \'沪指花\' print(name) print(name) nulige() liuyang() print(name) huangwei() # 黄伟 # 刘洋 # 刘洋 # 沪指花 # 黄伟
def weihou(): name = "陈卓" def weiweihou(): nonlocal name # nonlocal,指定上一级变量,如果没有就继续往上直到找到为止 name = "冷静" weiweihou() print(name) print(name) weihou() print(name) # 刚娘 # 冷静 # 刚娘
def foo(): print(\'from foo\') bar() foo()#报错,未定义 def bar(): print(\'from bar\')
递归:
def calc(n): print(n) if int(n/2) ==0: return n return calc(int(n/2)) calc(10) 输出: 10 5 2 1
import time person_list=[\'alex\',\'wupeiqi\',\'linhaifeng\',\'zsc\'] def ask_way(person_list): print(\'-\'*60) if len(person_list) == 0: return \'根本没人知道\' person=person_list.pop(0) if person == \'linhaifeng\': return \'%s说:我知道,老男孩就在沙河汇德商厦,下地铁就是\' %person print(\'hi 美男[%s],敢问路在何方\' % person) print(\'%s回答道:我不知道,但念你慧眼识猪,你等着,我帮你问问%s...\' % (person, person_list)) time.sleep(1) res=ask_way(person_list) return res res=ask_way(person_list) print(res)
递归特性:
1. 必须有一个明确的结束条件
2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少
3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)
堆栈扫盲http://www.cnblogs.com/lln7777/archive/2012/03/14/2396164.html
尾递归优化:http://egon09.blog.51cto.com/9161406/1842475
以上是关于15.python变量,递归的主要内容,如果未能解决你的问题,请参考以下文章