全局变量与局部变量
前者:无缩进
后者:子程序中的变量 有缩进
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)