全局变量:作用域很大,整个代码内部都有效。局部变量可以使用global关键字将全局变量进行修改。
局部变量:只在有限的区域内起作用,局部变量是定义在函数内部的,外面要用局部变量,只能return。
只有函数才能将变量私有化。
如果 函数的内部无global关键字,优先读取局部变量,如果没有局部变量, 则在函数内部只能读取全局变量,但不能进重新赋值。但对于可变类型,可以对内部元素进行操作,如列表.append()方法。
如果函数中有global关键字,变量本质上就是全局的那个变量,可以进行重新赋值。
以下是一个错误实例:从中得出的结论就是将global关键字放在函数最前面。
以下方法就是正确的:意味着将全局变量重新赋值为“自己“”
全局变量变量名大写,局部变量变量名用小写,这样可以避免因为变量名同名造成的错误。
函数可以进行嵌套。
变量中使用的关键字有global和nonlocal,global指代全局变量,而nonlocal指代上一级变量。
运行结果为:
name="张亚萍"
def fun():
name="冯振纹"
def fun2():
nonlocal name
name="很好"
fun2()
print(name)
print(name)
fun()
print(name)
运行结果为
前向引用:
def fun():
name="zhangyaping"
print(name)
fun2()
fun()
def fun2():
name="feng"
print(name) 程序将会报错,因为在调用的时候fun2()没有被加载。
风湿理论:函数即变量。必须记住这句话,函数在没有调用前不会被执行,只会加载。
函数递归:
在函数内部,可以调用其他函数,如果在一个函数内部自己调用自己,则称为函数的递归调用。
递归特性:
1.必须有明确的结束条件,return可以终结程序。
2.每次进入更深一层递归时,问题规模相比上次递归都应有所减少。
3.递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈这种数据结构实现的,每当进入一个函数调用,
栈就会增加一层栈帧,每当函数返回,栈就会减少一层栈帧,由于栈的大小是无限的,所以,递归调用的次数过多,会导致栈溢出)
函数递归补充: