进一步认识函数
什么是前向引用:
就是一个函数a体内嵌套另一个函数b,b函数的声明必须早于a函数对b的引用
def lizi(): print("in the lizi") info() lizi() def info(): print("in the info")
什么是局部变量:
就是一个变量只在函数里生效,函数就是这个变量的作用域;只有字符串,数字在局部里面更改不了全局的变量,但字典,集合,列表是可疑在局部变量中更改的,而元祖本色就不能更改
name = "zfq" def chang(): name = "zx" print(name) chang() print(name)
可以通过global将这个局部变量作用于全局(不过不推荐使用global,也不推荐改变全局变量,导致后期维护困难)
name = "zfq" def chang(): global name name = "zx" print(name) chang() print(name)
关于递归函数:
在函数内部,可以调用其他函数,如果调用的是自身,则这个函数就是递归函数;最多递归999层,当到998层还没有结果,则报错
递归函数的定义:
1.必须有一个明确的结束条件
2.每次进入更深一层递归时,问题规模相比上次递归都应该有所减少
3.递归效率不高,递归层次过多会导致栈溢出
def calc(n): print(n) if int(n/2)==0: return n return calc(int(n/2)) calc(10)
关于函数式编程:
是一种编程范式,即一种如何编写程序的方法论
关于高阶函数:
变量指向函数,函数的参数能接受变量,那么一个函数的就可以接受另一个函数作为参数
#高阶函数,将abs函数当成参数传入 def add(a,b,f): return f(a)+f(b) res = add(3,-6,abs)#abs表示绝对值的方法 print(res)