您当前的位置:首页 > 互联网教程

python 全局变量怎么用

发布时间:2025-05-13 22:43:23    发布人:远客网络

python 全局变量怎么用

一、python 全局变量怎么用

1、在python中,全局变量一般有两种使用方式:

2、第一种:是在一个单独的模块中定义好,然后在需要使用的全局模块中将定义的全局变量模块导入。

3、第二种:直接在当前的模块中定义好,然后直接在本模块中通过global声明,然后使用

4、SOLR_URL=';

5、 SOLR_URL=SOLR_URL+'#aa'

6、if __name__=='__main__':

7、PS:在此种用法中,如果我们在函数tt中不使用global声明全局变量SOLR_URL,其实也可以使用,但是此时应该是作为一个内部变量使用,由于没有初始值,因此报错

8、 Python查找变量是顺序是:先局部变量,再全局变量

9、SOLR_URL=';

10、 SOLR_URL=SOLR_URL+'#aa'

11、if __name__=='__main__':

12、 SOLR_URL=SOLR_URL+'#aa'

13、UnboundLocalError: local variable'SOLR_URL' referenced before assignment

14、if __name__=='__main__':

二、求Python中全局变量的详细理解

1、拿实际例子和你说一下吧,更好理解一些.

2、我们在拿到一个python脚本的时候,往往发现里面都有如下语句:

3、注意: __name__和'__main__'虽说看着像一类东西,但要注意的是__name__是一个变量,而'__main__'就是一个字符串常量.

4、假设我有一个文件叫hi.py,内容如下:

5、A.当我们直接执行hi.py这个文件时, __name__的值就是字符串'__main__'.

6、B.假设我们还有一个文件hello.py,它把hi.py作为模块导入(因为hello.py想直接用hi.py中定义的hello()函数).

7、需要注意,上图是将hi.py作为模块导入到了hello.py中(作为模块导入不需要写py后缀,也不能写),重点看下面的两个print()语句,一个打印的是hi.__name__,一个打印的是__name__,注意当hi.py被作为模块导入后,hi.__name__得到的是模块名,即hi.而在被执行的文件中直接输出__name__变量,其值永远是字符串'__main__'.见执行结果:

8、看到这里你可能还是云里雾里,下面对照着你的截图拿上面的例子分析一下:

9、"每个模块中都有一个全局变量__name__",这句没啥说的,就引入了一个叫__name__的变量.

10、"__name__的作用是获取当前模块的名称."(这句话其实说的不严谨,但目前先不去细究)这句也不是重点,下面才说的是__name__的值到底是什么.

11、"如果当前模块是单独执行的,则其__name__的值就是__main__",干货来了,拿上面的hi.py来讲,我们直接把hi.py作为可执行文件进行执行,则在它里面print(__name__)就是字符串'__main__'.

12、"如果是作为模块导入,则其__name__的值就是模块的名字",这也是干货,拿上面hello.py来说,因为hi是作为模块被导入的,所以print(hi.__name__)输出的就是模块名hi.这句指的就是这个意思.另外你看hello.py中也有一个print(__name__)输出的是字符串'__main__',因为我上面说了,只要在你执行的文件里直接单独输出__name__变量,它的值一定是'__main__'.

三、python-名称相同的局部变量和全局变量

要使生活简化,需避免局部变量与全局变量或其它局部变量同名。然而,技术上,在Python中让局部变量与全局变量同名是合法的。让我们通过在编辑器中输入以下代码并保存为sameName.py来观察实际结果:

在这个程序中,存在三个不同的变量,它们都命名为bacon。具体是:

1.在spam()被调用时局部作用域中存在的名为bacon的变量;

2.在bacon()被调用时局部作用域中存在的另一个名为bacon的变量;

3.在全局作用域中存在的第三个名为bacon的变量。

由于这三个独立的变量同名,追踪某一时刻使用的是哪个变量可能会变得复杂。这就是避免在不同作用域内使用相同变量名的原因。