写点什么

Python 教程之变量(3)—— 全局变量和局部变量

  • 2022 年 9 月 11 日
    安徽
  • 本文字数:1729 字

    阅读完需:约 6 分钟

全局变量是那些没有在任何函数内部定义并具有全局范围的变量,而局部变量是那些在函数内部定义的变量,其范围仅限于该函数。换句话说,我们可以说局部变量只能在初始化它的函数内部访问,而全局变量在整个程序和每个函数内部都可以访问。局部变量是那些在函数内部初始化并且仅属于该特定函数的变量。它不能在函数之外的任何地方访问。让我们看看如何创建一个局部变量。

示例: 创建局部变量

def f():
# local variable s = "I love python" print(s)

# 驱动程序代码f()
复制代码

输出

I love python
复制代码

如果我们尝试在函数外部使用这个局部变量,那么让我们看看会发生什么。

例子:

def f():		# local variable	s = "I love python"	print("Inside Function:", s)
# 驱动程序代码f()print(s)
复制代码

输出:

NameError: name 's' is not defined
复制代码

全局变量

这些是在任何函数之外定义的并且可以在整个程序中访问的那些,即在每个函数的内部和外部。让我们看看如何创建一个全局变量。

示例: 定义和访问全局变量

# This function uses global variable sdef f():	print("Inside Function", s)
# Global scopes = "I love python"f()print("Outside Function", s)
复制代码

输出:

Inside Function I love pythonOutside Function I love python
复制代码

变量 s 被定义为全局变量,既可以在函数内部使用,也可以在函数外部使用。

注意: 由于没有局部变量,因此将使用全局变量的值,但请确保局部变量和全局变量应具有相同的名称。

现在,如果有一个同名的变量在函数内部以及全局初始化怎么办。现在问题来了,局部变量是否会对全局变量产生一些影响,反之亦然,如果我们在函数 f() 中更改变量的值会发生什么?它也会影响全局变量吗?我们在下面的代码中对其进行测试:

# 该函数有一个名称与 s 相同的变量。

def f(): s = "Me too." print(s)

# 全局范围s = "I love python"f()print(s)
复制代码

输出

Me too.I love python
复制代码

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

问题是,如果我们尝试更改函数内部的全局变量的值会怎样。让我们用下面的例子来看看。

例子:

# 该函数使用全局变量 sdef f():	s += 'GFG'	print("Inside Function", s)

# Global scopes = "I love python"f()
复制代码

输出:

UnboundLocalError: local variable 's' referenced before assignment
复制代码

为了使上述程序正常工作,我们需要使用“global”关键字。让我们看看这个全局关键字是什么。

全局关键字:

如果我们想要进行赋值或更改全局变量,我们只需要在函数中使用 global 关键字。 打印和访问不需要全局。由于在 f() 中对 s 的赋值,Python“假设”我们需要一个局部变量,因此第一条语句会抛出错误消息。如果没有将其声明为全局变量,则在函数内部更改或创建的任何变量都是局部变量。要告诉 Python,我们要使用全局变量,我们必须使用关键字 “global” ,如以下示例所示: 

示例 1: 使用全局关键字

# 此函数修改全局变量's'def f():	global s	s += ' HY'	print(s)	s = "Look for Haiyong Python Section"	print(s)
# 全局范围s = "Python is great!"f()print(s)
复制代码

输出

Python is great! HYLook for Haiyong Python SectionLook for Haiyong Python Section
复制代码

现在没有歧义了。 

示例 2: 使用全局变量和局部变量

a = 1
# 使用全局,因为没有局部“a”def f(): print('Inside f() : ', a)
# 变量“a”被重新定义为局部变量def g(): a = 2 print('Inside g() : ', a)
# 使用 global 关键字修改全局 '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)
复制代码

输出

global :  1Inside f() :  1global :  1Inside g() :  2global :  1Inside h() :  3global :  3
复制代码

本篇文章到此就结束了,相关文章:

感谢大家的阅读,有什么问题的话可以在评论中告诉我。希望大家能够给我来个点赞+收藏+评论 ,你的支持是海海更新的动力!后面我会持续分享前端 & 后端相关的专业知识。

发布于: 刚刚阅读数: 4
用户头像

公众号:海拥 2021.11.29 加入

【个人网站】haiyong.site 【联系方式】微信:wh18363 【软件技能】前端,Java,Python 【个人称号】InfoQ 写作社区签约作者,华为云享专家,CSDN原力作者,全栈领域优质创作者,掘金2021年度人气作者No.21

评论

发布
暂无评论
Python 教程之变量(3)—— 全局变量和局部变量_Python_海拥(haiyong.site)_InfoQ写作社区