1.全局变量与局部变量的定义:
全局变量就是在 整个范围内都可以调用的变量局部变量就是在函数内部可以调用, 一旦出了函数到整体来的时候就不能调用的变量,我们称为局部变量
只有函数才能让包含在自己'体内'的东西'局部化'
例如:
name = 'capture' #这里的name就是全局变量 def test(): name = '梁非凡' #而这里的name是局部变量 print(name) test() print(name) #这里的name输出的是capture,虽说在函数里已经把梁非凡赋值给了name,但是因为是局部变量,所以在出了函数的时候就已经失效了
2.如何把局部变量改成全局变量?
在上面的例子中,我们在name = '梁非凡'的前面加上一句global name
这样,就可以把name 这个局部变量变成全局变量了这里的global只是给了一个通道,让函数内部可以通过这个通道联系到global后面跟的全局变量
在函数内部的东西,一般想要调用参数或者做别的事情, 都会优先从函数内部找,找不到才去找全局的(就像在家想吃东西,肯定都先在家里找吃的,找不到才会出门去找吃的)
例如:
def test1(): global name print(name) def test2(): name = '123' print(name) test1() test2()像这里,虽然test1()已经把name引用成全局变量了,但是在test2()里,还是按照基本法优先找了局部变量的name = '123'
最后,如果是在函数的嵌套函数里使用了global关键字, python会去找最外层的全局变量,而不是上一层函数的变量
如果要调用上一层函数的变量,请使用关键字: nonlocal
3.建议:在声明变量的时候,最好给全局全局变量的变量名一些相对于局部变量变量名不同的东西,让它们名字不同,这样更容易区分局部变量和全局变量
4.嵌套函数的执行顺序
嵌套函数其实也是按照python的基本法来执行的,就是从前到后,按照缩进执行,但是因为相对要复杂一点所以值得说一下例如:
x = '这是第0个字符串' #1 def a1(): #2 x = '这是第一个字符串' #3 print(x) #4 def a2(): #5 x = '这是第二个字符串' #6 print(x) #7 def a3(): #8 x = '这是第三个字符串' #9 print(x) #10 a3() #11 a2() #12 a1() #13 print(x) #14这里的执这里的执行顺序应该是1-13-3-4-12-6-7-11-9-10-14