全局变量:作用域很大,整个代码内部都有效。局部变量可以使用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.递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈这种数据结构实现的,每当进入一个函数调用,

栈就会增加一层栈帧,每当函数返回,栈就会减少一层栈帧,由于栈的大小是无限的,所以,递归调用的次数过多,会导致栈溢出)

函数递归补充: