前言

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

示例: 创建局部变量

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 的赋值,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! 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

到此这篇关于Python变量教程之全局变量和局部变量的文章就介绍到这了,更多相关Python全局与局部变量内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

Python变量教程之全局变量和局部变量的更多相关文章

  1. ios – 如何从变量访问属性或方法?

    是否可以使用变量作为Swift中方法或属性的名称来访问方法或属性?在PHP中,您可以使用$object->{$variable}.例如编辑:这是我正在使用的实际代码:解决方法你可以做到,但不能使用“纯粹的”Swift.Swift的重点是防止这种危险的动态属性访问.你必须使用Cocoa的Key-ValueCoding功能:非常方便,它完全穿过你要穿过的字符串到属性名称的桥,但要注意:这里是龙.

  2. iOS >>块>>更改块外部的变量值

    我不是在处理一个Object并改变它,就像我的mString一样.我希望’center’属性的行为类似于myInt,因为它是直接访问的C结构,而不是指向对象的指针.我希望’backgroundColor’的行为类似于我的imstring,因为它是一个指向一个新对象的对象的指针,不是吗?

  3. ios – Xcode Bot:如何在post触发器脚本上获得.ipa路径?

    我正在使用机器人来存档iOS应用程序,我需要获取.ipa产品路径才能将其发布到我们的分发系统中.机器人设置:并使用脚本打印所有env变量,其中不包含ipa文件的路径.此外,一些变量指向不存在的目录,即:XCS_OUTPUT_DIR这里的env变量输出:除此之外,我还能够确认.ipa文件是在另一个文件夹中创建的(/IntegrationAssets//

  4. ios – 使用附加字符串本地化Info.plist变量

    我正在尝试本地化应用程序的名称,同时仍然能够根据构建配置追加字符串.所以目前它被设置为:该设置定义为:通过这种方式,我们可以为应用程序添加后缀以用于不同的beta版本.问题是,当我们尝试本地化本地化的InfoPlist.strings中的应用程序显示名称时,就像这样我们覆盖存储在Info.plist中的值,并丢失后缀字符.这有什么好办法吗?

  5. iOS – 开始iOS教程 – 变量之前的下划线?

    这是正确的还是我做错了什么?

  6. ios – 静态计算变量被多次实例化

    我有一个日期格式化程序,我试图在UITableViewCell子类中创建一个单例,所以我创建了一个这样的计算属性:问题是我不止一次看到print语句,这意味着它不止一次被创建.我已经找到了其他方法,但我很想知道这里发生了什么.有任何想法吗?解决方法您的代码段相当于只获取属性,基本上它与以下内容相同:如果你只想运行一次,你应该像定义一个惰性属性一样定义它:

  7. ios – UIApplication.delegate必须仅在主线程中使用[复制]

    我应该在主调度中的viewControllers中声明这些)变量位置声明定义了它的范围.您需要确定这些变量的范围.您可以将它们声明为项目或应用程序级别(全局),类级别或特定此功能级别.如果要在其他ViewControllers中使用这些变量,则使用公共/开放/内部访问控制将其声明为全局或类级别.

  8. ios – 无法理解Objective-C块文档

    为什么localVariable“按价值使用?”>如果我在第二个例子中将__block存储类型添加到localVariable,我错误地假设该块关闭了变量,所以它将它保留在堆中直到块被释放?解决方法Howexactlyisoneexample“accessedbyreference”whiletheotheroneisaccessedbyvariable?self是当前正在执行找到块的方法的对象.强引用只是意味着对象的保留计数增加.IfIaddthe__blockstoragetypetolocalVar

  9. ios – 为BOOL变量编写getter和setter

    显然,使用obj-c,通常没有理由编写getter和setter(感谢有用的mr@synthesize).所以现在,需要做到这一点,我遇到了一个我不知道如何编写它们的问题.:p我敢肯定我可能不会以正确的方式解决我的问题–只是将我的对象子类化得更容易–但我正在尝试编写类别代码以添加属性,因为(在开头)它更快,因为我想学习如何在我的应用程序中使用类别代码.我有这个:我在setter中没有if查询就试过

  10. XCode 3.2 Ruby和Python模板

    在xcode3.2下,我的ObjectiveCPython/Ruby项目仍然可以打开更新和编译,但是你无法创建新项目.鉴于xcode3.2中缺少ruby和python的所有痕迹(即创建项目并添加新的ruby/python文件),是否有一种简单的方法可以再次安装模板?我发现了一些关于将它们复制到某个文件夹的信息,但我似乎无法让它工作,我怀疑文件夹的位置已经改变为3.2.解决方法3.2中的应用程序模板

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部