python把局部变量提升为全局变量需要注意的问题

时间:2024-05-22 20:47:00

有时候,我们写python代码的时候,需要在一个代码块中使用另外一个代码块中的局部变量,因此需要把那个代码块中的局部变量提升为全局变量。

把局部变量提升为全局变量有两种办法:

一、直接把要转换为全局变量的局部变量从代码块中拿出来单独定义,不放在代码块中定义,这是最常用的办法。例:

把函数func中的变量a由局部变量转换为全局变量。

修改前代码:

python把局部变量提升为全局变量需要注意的问题

修改后代码:

python把局部变量提升为全局变量需要注意的问题

注意:

1、如图所示,如果a变量在以前的代码块就定义过,那么执行修改前的代码会输出结果,而不会报错,因此,把局部变量提升为全局变量的时候要从整体考虑,不要 因为此处的改动而影响到其他代码块的运行。

2、同一个页面(类)中,对每个变量的命名最好不要重复。

二、把需要转换为全局变量的局部变量前面加一段语句:关键字(global) 变量名称。例:

python把局部变量提升为全局变量需要注意的问题

注意:因为是在函数中加关键字global+变量名称来实现把局部变量转换为全局变量,因此,要在函数外使用这个全局变量,必须先调用函数,再使用此全局变量,因为只有调用了函数,此变量才能由局部变量转换为全局变量,才能被其他代码所使用,否则会提示此变量不存在。

例:

1、先打印函数中的全局变量,然后再调用函数(前提条件:变量n在之前未被定义过):

python把局部变量提升为全局变量需要注意的问题

虽然这个变量在函数中已经定义过,但是由于没有调用过函数,因此在打印这个变量的时候,会提示这个变量不存在。

2、先调用函数,然后打印全局变量,会输出正确结果:

python把局部变量提升为全局变量需要注意的问题

因为先调用了函数,让变量n转变为全局变量,所以会打印出正确结果。

假如要打印变量b,也会报步骤1的错误,提示变量b不存在,因为b是一个局部变量,只在函数中存在,函数外是不存在的。

3、在执行完2的基础上再执行1,也会输出正确结果:

python把局部变量提升为全局变量需要注意的问题

原因:因为在2的步骤中,已经把变量由局部变量转换为全局变量了,因此再执行3的步骤中,因为变量名存在,所以打印正确结果。

转载于:https://my.oschina.net/u/3986737/blog/2223261