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

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

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


示例: 创建局部变量

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 s
def f():
  print("Inside Function", s)
# Global scope
s = "I love python"
f()
print("Outside Function", s)

输出:

Inside Function I love python
Outside 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

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

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


例子:

# 该函数使用全局变量 s
def f():
  s += 'GFG'
  print("Inside Function", s)
# Global scope
s = "I love python"
f()

输出:

UnboundLocalError: local variable 's' referenced before assignment

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

全局关键字:

如果我们想要进行赋值或更改全局变量,我们只需要在函数中使用global 关键字。 打印和访问不需要全局。由于在 f() 中对 s 的赋值,如果我们想要进行赋值或更改全局变量,我们只需要在函数中使用global 关键字。 打印和访问不需要全局。由于在 f() 中对 s 的赋值,


示例 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! HY
Look for Haiyong Python Section
Look 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 :  1
Inside f() :  1
global :  1
Inside g() :  2
global :  1
Inside h() :  3
global :  3

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



目录
相关文章
|
25天前
|
Python
【python】python跨文件使用全局变量
【python】python跨文件使用全局变量
|
1月前
|
JSON C语言 C++
【Python 基础教程 26】Python3标准库全面入门教程:一步步带你深入理解与应用
【Python 基础教程 26】Python3标准库全面入门教程:一步步带你深入理解与应用
63 1
|
1天前
|
存储 Python 容器
|
3天前
|
运维 Shell Python
Shell和Python学习教程总结
Shell和Python学习教程总结
|
4天前
|
存储 Python
Python变量类型
Python变量类型
8 0
|
4天前
|
存储 Python
Python的变量与数据类型详解
Python的变量与数据类型详解
11 0
|
9天前
|
索引 Python
Python高维变量选择:SCAD平滑剪切绝对偏差惩罚、Lasso惩罚函数比较
Python高维变量选择:SCAD平滑剪切绝对偏差惩罚、Lasso惩罚函数比较
11 0
|
11天前
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
|
1月前
|
存储 Python
Python变量与数据类型探秘
本文介绍了Python编程中的核心概念——变量和数据类型。变量是存储数据的标识符,无需预声明类型,类型由赋值自动确定。命名规则要求变量名具有描述性,以字母或下划线开头,区分大小写。Python支持多种数据类型:数值(整数、浮点数、复数)、字符串、列表、元组、字典和集合。理解这些基本概念和类型特性对编写高效Python代码至关重要。
|
1月前
|
存储 算法 数据挖掘
【Python 基础教程 25】全面入门指南:深度解析Python3的命名空间,作用域及变量使用教程
【Python 基础教程 25】全面入门指南:深度解析Python3的命名空间,作用域及变量使用教程
56 0