局部变量与全局变量
全局变量变量名全部大写,局部变量变量名全部小写
顶头写的觉全局变量
在子程序里面写的叫局部变量
无global的时候优先读取局部变量,且无法对全局变量重新赋值,注:如果是可变类型变量是可以改变的
name='liyifan' #全局变量 def chang_name(): global name #加上这句将会改变全局变量的值 name='achun' #局部变量 如果前面加上global关键字,则这里是修改全局变量的值 print('chang_name',name) chang_name()
name = 'lin' def test(): name = 'wu' def tests(): nonlocal name #取上一级的name = 'wu' name = 'wupangpang' tests() print(name) print(name) test() print(name)
递归
必须有一个明确的结束条件
每次进入更深一层递归时,问题规模相比上一次应当相应减少
def calce(n); print(n) calce(n) calce(10) #死循环
def calc(n): print(n); if int(n/2) == 0: return n return calc(int(n/2)) calc(10)
import time person_list=['摩西','马克思','小米','爱丽丝'] def ask_way(person_list): print('-',60) if len(person_list) == 0: #删除完了全部列表数据,这里就会是0 return '没人知道' person = person_list.pop(0) #删除列表的第一个 if person == 'momo': return '%ssay:I know, just go ahead and turn left.' %person print('hi! [%s],Could you tell me how to get XXXX?' %person) print("%sanswer:I don't know. You wait for me to ask for you.%s..." %(person,person_list)) time.sleep(3) #睡上3秒在去问下一个 return ask_way(person_list) res = ask_way(person_list) print(res)