一、作用域
作用域:可以被影响的范围。
全局变量:在最外层声明的变量。
局部变量:在某些代码块声明的变量。
全局变量举例
xxx=100 #最外层的变量,全局变量
def P():
print(xxx)
P()
说明:外面一层的变量,能够被代码块内部一层的变量调用。
局部变量的注意事项
1.在函数体内部声明的变量,不能再函数体外部去调用,会直接报错。
2.在函数体内部同名的局部变量,即使重新赋值了,也不会影响函数体外部的那个同名全局变量。如果真的想要改变外部同名的全局变量,那么我们必须要在函数体内部使用global关键字声明变量。
3.在函数体内部,如果先调用外部的全局变量后,是不能再次修改的,因为在函数体内部写了同名的变量后,会使得编译器无法识别局部变量还是全局变量,使得程序异常。
二、函数的嵌套
在python中是运行函数嵌套定义使用的。注意:函数体内部定义的函数也必须要手工调用才能使得有函数中的效果,否则默认是不被调用执行的。
举例:
#函数的嵌套
eee=10
def P3():
eee=20
print("P3中eee=",eee)
def P4():
fff=5
print("P4中的结果=",fff+eee)
P4()
P3()
函数嵌套的作用范围
在函数体内部定义的函数需要在函数体内部调用,默认不能在全局的作用范围的最顶层调用这个函数的。
函数的复杂嵌套调用
#函数的嵌套
eee=10
def P3():
eee=20
print("P3中eee=",eee)
def P4():
fff=5
print("P4中的结果=",fff)
return P4
P3()()
注意:如果使用双括号,在调用内存函数的时候,外层函数将会被自动调用。
函数的指针赋值调用
#函数的嵌套
eee=10
def P3():
eee=20
print("P3中eee=",eee)
def P4():
fff=5
print("P4中的结果=",fff)
return P4 #这里返回的是指针类型的变量
K1=P3()
K1()
结论:在调用内存函数的时候,外层函数也将会被自动调用。
三、解决问题的思路
1.带有红色下划线的报错,它是一种语法报错
2.异常报错,先调试,实在不行,可以将报错去直接搜索引擎直接搜索报错
3.搜索问题的知识点。
四、总结强调
1.作用域。全局变量区别于局部变量。
2.函数的嵌套。注意点,在内部定义的函数被调用时候会自动调用其父级函数。函数也有作用范围。
3.解决问题的思路。
4.一定要主动多测试代码。
本节源代码(已被#注释):
# xxx=100 #最外层的变量,全局变量 # # def P(): # ddd=300 #在函数体内部,是局部变量 # # global xxx # xxx=200 #这个是与全部变量同名的局部变量 # # print(xxx) # # P() # print(xxx) # yyy=200 # # def P2(): # print(yyy) # # yyy=100 #函数的嵌套 # eee=10 # def P3(): # eee=20 # print("P3中eee=",eee) # def P4(): # fff=5 # print("P4中的结果=",fff+eee) # return P4 #这里返回的是指针类型的变量 # # K1=P3 # K1()() # # ttt=10 # while(True): # ttt=20 # break # print(ttt)