一.局部变量和全局变量 函数内部:局部变量优先全局变量 局部变量仅限于函数内部使用 通常:全局变量变量名大写 局部变量变量名小写1.global关键字 在函数内部只能读全局变量,利用global进行修改name=‘fjy‘def change_name(): global name name=‘bcs‘ print(name)##打印结果 fjy错误用法:global在变量名后面name = ["雪花","寒冰"]def snow(): name = "雾霾" global name print(‘冬天有‘, name) snow() #直接报错 2.函数内部优先读取局部变量name = ["雪","寒冰"]def snow(): global name name = "雾霾" print("冬天下",name) name=‘温暖‘ print(‘冬天有‘, name) snow()打印结果:冬天下 雾霾冬天有 温暖 3.对于可变类型,利用global可以对内部元素进行操作name = ["雪","寒冰"]def snow(): global name name[0] = "雾霾" print("冬天下",name) name=‘温暖‘ print(‘冬天有‘, name) snow() 打印结果:冬天下 [‘雾霾‘, ‘寒冰‘]冬天有 温暖 4.关于多重嵌套函数(1)对于里层函数有global时,优先取值全部变量 在这里global有种如同指针指向内存的方式name = "艾欧尼亚"def w(): name = "永不" def ww(): global name name =‘放弃‘ print(name) ww()w()打印结果:放弃(2)对于多层函数没有global函数没有定义变量就往上层找name = "艾欧尼亚"def w(): name = "永不" def ww(): print(name) ww()w()打印结果:永不 5.nonlocal关键字,指定上一级变量可修改,如果没有就继续往上直到找到为止(但不能到全局变量否则报错)上层有变量:name = "艾欧尼亚"def w(): name = "永不" def ww(): nonlocal name name=‘战无不胜‘ print(name) ww()w()打印结果:战无不胜 上层无变量:name = "艾欧尼亚"def p(): name=‘牛逼‘ def w(): def ww(): nonlocal name # name=‘战无不胜‘ print(name) ww() w()p()打印结果:牛逼 二.函数即变量理论
函数在未调用时,执行到函数,函数名如同变量名,函数体如同字符串封存在内存中。调用时在执行。例如:正常运行def qi(): print(‘祁磊大坏蛋‘) li()def li(): print(‘历经风是条子‘)qi()运行错误(第二个函数未定义,如同这个变量没有定义)def qi(): print(‘祁磊大坏蛋‘) li()qi()def li(): print(‘历经风是条子‘)
三.浅谈递归函数真正领悟递归的精髓、灵活地运用递归思想来解决问题必须经过长期使用,是一个漫长的过程。递归特性:1.必须有一个明确的结束条件2.每次进入更深一层递归,规模比上一层递归减少3.递归效率不高,循环越多会导致栈溢出****递归中每一次return都是返还给上一层递归函数,如果中途没有打印,最终只有一个结果
1 def cla(n): 2 print(n) 3 if int(n/2) == 0: 4 return n 5 return cla(int(n/2)) 6 print(cla(8))
******84211******cla(8)本身等于1, 8 4 2 1是在执行cla()函数过程中打印出来的原理图
原文地址:https://www.cnblogs.com/snowony/p/11773828.html
时间: 2024-10-02 04:35:44