全局变量和局部变量:
全局变量:如果直接创建变量,而不在子程序中创建,创建的为全局变量
局部变量:在子程序中创建的变量为局部变量,局部变量只能应用在子程序中
global 变量:在子程序中,可将变量应用至全局,必须提前 申明
name='lhf' def change_name(): print('我的名字',name) change_name() def change_name(): name='帅了一笔' print('我的名字',name) change_name() print(name) def change_name(): global name name='帅了一笔' print('我的名字',name) change_name() print(name)
风湿理论:函数就是变量
如果创建的函数中有函数没有被创建,但在没有调用这个函数之前创建了,则不会报错
def mode(): print("hello") bau() def bau(): print("world") mode()
递归函数:在函数内部中,可以调用其他函数,如果一个函数在内部调用自身本身,这个函数就是递归函数。
递归的特性:
1.必须有一个明确的结束条件
2.每次进入更深一层的递归时,问题规模相比上次递归都应有所减少
3.递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用栈(stack)这种数据结构实现的,每当进入一个函数的调用,栈就会加一层栈帧,每当函数返回,栈就会减少一层栈帧。由于栈的大小不是无限的 ,所以,递归调用的次数过多吗,就导致栈溢出)
#问路 import time #1 person_list = ["alom","poat","jion","haux"] def ask_way(person_list): #定义函数将列表传入 print("-" *60) if len(person_list) == 0: return '没人知道' person = person_list.pop(0) if person == 'jion': return '%s说:我知道,她在东边' %person print('hi[%s],问一下路在哪里'%person) print("%s回答,我不知道,但我可以帮你问问%s"%(person,person_list)) time.sleep(3) res= ask_way(person_list) return res res = ask_way(person_list) print(res)