局部变量和全局变量
一、定义局部变量:就是在函数内部定义的变量。这个变量只能在定义这个变量的函数内部使用。 全局变量:就是在函数外部定义的变量。(注意是定义在所有函数的外部)。所有的函数内部都可以使用这个变量。
二、局部变量的使用1. 函数外部不能使用局部变量。【例1】【例2】 2. 函数执行时,执行到创建局部变量的地方,局部变量才会创建。当函数执行完后,局部变量也就死亡了。只有在生命周期内才能使用这个变量。 3. 不同的函数内部,可以定义相同的局部变量。彼此之间没有任何关系。【例3】
例1:函数外部不能使用局部变量
结果:
例2:函数外部不能使用局部变量
结果:
例3:
结果:
三、全局变量的使用1. 全局变量就是在函数外部定义的变量。【例1】 2. Python有一个限制:在函数内部不允许改变全局变量的值。【例2】 如果确实需要在函数内部对全局变量进行修改,可以使用global关键字声明一下。【例3】 3. 要注意全局变量定义的位置。虽然也可以定义在函数下方【例4】,但是有时候容易出错【例5】,最好是把所有的全局变量统一放在所有函数的上方进行定义。【例6】 在实际代码开发的时候,最好这样写:
4. 全局变量的命名建议 如果全局变量起名字的时候很普通,那么在函数内部起名字的时候有可能也起了这个名字,这个时候就会混淆。所以有的公司规定,在给全局变量起名字的时候加上"g_"或"gl_"的前缀。【例7】
例1:
结果:
例2:在函数内部不能修改全局变量的值
结果:
执行完fun2()之后,输出的值还是10。说明fun1()中的语句并不是改变全局变量num的。
例3:使用global关键字
结果:
执行完fun2()之后,输出的值是20。说明fun1()中的语句改变了全局变量num的值。
例4:代码可以成功执行么?
结果:
fun1()中是认识num1的。为什么呢? 先执行第1句。 然后到第3句,发现是个函数定义,就会跳过。不执行。 再执行第9行,现在有了num1了。 在执行第11行。会调用fun1() 进入fun1()之后,执行第5句的时候因为已经有全局变量num,所以输出。执行第6句的时候,因为已经有全局变量num1,所以会输出。
所以上面的程序是可以成功执行的。
例5:代码可以成功执行么?
结果:
当执行到12行的时候,已经知道num和num1这两个变量了。但是还不知道num2这个变量。所以调用fun1()时,找不到num2。
例6:
结果:
例7:推荐给全局变量这么起名字,这样函数里面的变量名就不可能重了。
结果:
|