Python中的全局变量和局部变量的区别(代码详解)


本文摘自php中文网,作者藏色散人,侵删。

全局变量是在函数外部定义和声明的变量,我们需要在函数内部使用它们。

1

2

3

4

5

6

7

#这个函数使用全局变量s

def f(): 

    print

   

# 全局作用域

s = "I love Python"

f()

输出:

1

I love Python

如果在函数范围内定义了具有相同名称的变量,那么它将仅打印函数内给出的值而不是全局值。

1

2

3

4

5

6

7

8

9

# 这个函数有一个与s同名的变量。

def f(): 

    s = "Me too."

    print

   

# 全局作用域

s = "I love Python"

f()

print s

输出:

1

2

Me too

I love Python

在我们调用函数f()之前,变量s被定义为字符串“I love Python”。f()中唯一的语句是“print s”语句。由于没有本地s,将使用全局s的值。

问题是,如果我们改变函数f()内部的s值会发生什么?它会影响全局吗?

我们在下面的代码中测试它:

1

2

3

4

5

6

7

8

9

10

11

12

def f(): 

    print s

   

    # 如果我们在下面评论,这个程序不会显示错误。

    s = "Me too."

   

    print s

   

#全局作用域

s = "I love Python"

f()

print s

输出:

1

Line 2: undefined: Error: local variable 's' referenced before assignment

为了使上述程序有效,我们需要使用“global”关键字。如果我们想要进行分配/更改它们,我们只需要在函数中使用全局关键字。打印和访问不需要全局。

Python“假设”我们想要一个局部变量,因为f()内部的赋值,所以第一个print语句抛出此错误消息。在函数内部更改或创建的任何变量都是本地的,如果它尚未声明为全局变量。要告诉Python,我们要使用全局变量,我们必须使用关键字“global”

如以下示例所示:

1

2

3

4

5

6

7

8

9

10

11

# 这个函数修改全局变量's'

def f():

    global s

    print s

    s = "Look for Python"

    print

   

#全局作用域

s = "Python is great!"

f()

print s

输出:

1

2

3

Python is great!

Look for Python.

Look for Python.

一个很好的例子:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

a = 1

   

# 使用global,因为没有本地'a'

def f():

    print 'Inside f() : ', a

   

#变量“a”被重新定义为局部变量

def g():    

    a = 2

    print 'Inside g() : ',a

   

#使用全局关键字修改全局'a'

def h():    

    global a

    a = 3

    print 'Inside h() : ',a

   

# 全局作用域

print 'global : ',a

f()

print 'global : ',a

g()

print 'global : ',a

h()

print 'global : ',a

输出:

1

2

3

4

5

6

7

global :  1

Inside f() :  1

global :  1

Inside g() :  2

global :  1

Inside h() :  3

global :  3

相关推荐:《Python教程》

以上就是Python中的全局变量和局部变量的区别(代码详解)的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

什么是爬虫?Python网络爬虫中概念的介绍

Python file seek() 方法是什么?怎么理解并使用它?

Python中class怎么用

Python如何运行一个Python程序

Python中pandas的深入理解(代码示例)

Python怎么把列表转化为字符串

win10怎么下载Python并安装

Python基础学习if语句

Python中对数函数怎么表示

Python中线程的mq消息队列实现及优缺点介绍

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...