06 变量与递归函数

全局变量与局部变量
前者:无缩进
后者:子程序中的变量 有缩进

name="lhj"
def change_name():
    name='cool'
    print('change_name',name)
    print (name)
change_name()

name="lhj"
    def change_name()
    global name            #global使name变成全局变量的改变
    name='cool'        #这里也是全局变量的修改
    print('change_name',name)    



ATT:global声明最好放在开头 否则可能报错
写代码习惯规则:全局变量大写,局部变量小写

name="lhj"
def weihou()    
    name='cool'    
    def weiweihou():
        global name                #若执行此子函数,则全局变量修改
        name='coolcool'
print('change_name',name)

name="lhj"
    def weihou()    
    name='cool'    
    def weiweihou():
        nonlocal name                #声明上一级变量
        name='coolcool'
print('change_name',name)
                    


风湿理论:函数即变量!!!细思甚恐!!!

递归:在函数内部,调用自己本身
def calc(n):
print (n)
if int(n/2)==0:
return n
res=calc(int(n/2))
return res
特性:1 必须有一个即明确的结束条件
2 每次进入更深一层递归 问题规模比上次递归有所减少
3 递归效率不高 层次过多会导致栈溢出

import time

person_list=[1,2,3,4,5]
def ask_way(person_list):
    print ('-'*60)
    if len(person_list)==0:
        return "根本没人知道“
    person=person_list.pop(0)
    if person=='4':
        return '%s说:我知道,老男孩就在XXX地方'%person

    print ('hi 帅哥[%s] 敢问路在何方'%person)
    print('%s回答:不晓得 我帮你问问%s吧'%(person,person_list))
    time.sleep(1)
    res=ask_way(person_list)    #返回啦!!递归
    print('%s问的结果是:%res'%(person,res))
    return res
res=ask_way(person_list)
print(res)    
原文地址:https://www.cnblogs.com/louzhiyuan/p/10389545.html