当前位置:首页 > 编程技术 > 正文内容

Python 中的变量作用域

yc8881年前 (2023-08-15)编程技术293

Python 中的变量作用域

通常,在块中定义的变量仅在该块中可用。在街区外无法到达。这样的变量称为局部变量。形式参数标识符也表现为局部变量。

下面的例子将强调这一点。试图打印其作用域之外的局部变量将引发NameError 异常。

Example: Local Variable

def greet():
    name = 'Steve'
    print('Hello ', name)

这里,namegreet()函数的局部变量,不能在函数外部访问。

Example: Local Variable

>>> greet()                            Hello Steve>>> name Traceback (most recent call last):File "<pyshell#4>", line 1, in <module> name
NameError: name 'name' is not defined

任何存在于任何函数块之外的变量称为全局变量。它的值可以从任何函数内部访问。在下面的例子中,name变量在函数定义之前被初始化。 因此,它是一个全局变量。

Example: Global Variable

name='John'def greet():
    print ("Hello ", name)

现在,您可以访问全局变量name,因为它是由函数定义的。

>>> greet()                            Hello Steve>>> name'Steve'

但是,如果我们在函数内部为全局声明的变量赋值,则会在函数的命名空间中创建一个新的局部变量。此赋值不会改变全局变量的值。例如:

Example: Local and Global Variables

name = 'Steve'def greet():
    name = 'Bill'
    print('Hello ', name)

现在,改变函数内部全局变量name的值不会影响其全局值。

>>> greet()Hello Bill>>> name'Steve'

如果您需要从函数内部访问和更改全局变量的值,该权限由global关键字授予。

Example: Access Global Variables

name = 'Steve'def greet():
    global name
    name = 'Bill'
    print('Hello ', name)

上面将在 Python Shell中显示以下输出。

>>> name                               
'Steve'>>> greet()                            Hello Bill>>> name                               
'Bill'

也可以同时使用同名的全局变量和局部变量。内置函数globals()返回所有全局变量及其各自值的字典对象。 使用变量的名称作为关键字,可以访问和修改其值。

Example: Global Variables

name = 'Steve'def greet():
    globals()['name'] = 'James'
    name='Steve'
    print ('Hello ', name)

上述代码的结果显示了具有相同名称的全局变量和局部变量之间的冲突以及如何解决该冲突。

>>> name'Steve'>>> greet()    Hello Steve 
>>> name'James'

更多信息,请访问 Python 中的全局和局部。


本站发布的内容若侵犯到您的权益,请邮件联系站长删除,我们将及时处理!


从您进入本站开始,已表示您已同意接受本站【免责声明】中的一切条款!


本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行研究。


本站资源仅供学习和交流使用,版权归原作者所有,请勿商业运营、违法使用和传播!请在下载后24小时之内自觉删除。


若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,使用者自行承担,概与本站无关。


本文链接:https://www.10zhan.com/biancheng/10685.html

标签: Python
分享给朋友:

“Python 中的变量作用域” 的相关文章

【说站】利用Webhook实现Java项目自动化部署

【说站】利用Webhook实现Java项目自动化部署

用webhook就能实现Java项目自动部署,其实原理很简单。费话不多说,直接往下看教程。1. 创建gitee仓库并初始化2. 在linux安装git3. 在宝塔的软件的商店里下载Webhook4....

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

【说站】电脑安装MySQL时出现starting the server失败原因及解决方案

今天在安装MySQL时出现starting the server失败,经过查询分析得出以下结论,记录一下操作步骤。原因分析:如果电脑是第一次安装MySQL,一般不会出现这样的报错。如下图所示。star...

【说站】使用systemctl配置dnspod-shell实现ddns

【说站】使用systemctl配置dnspod-shell实现ddns

这个是毛子路由器上用的脚本,由于碳云的nat服务器公网IP不断的变,因此只好通过ddns来稳定连接nat服务器了。顺便水一篇文章,大家新年快乐。使用前需要将域名添加到 DNSPod 中,并添加一条A记...

【说站】jenkins配置ssh服务器并配置ssh servers

【说站】jenkins配置ssh服务器并配置ssh servers

1.系统管理-》配置-》Publish over SSH当然,没有这个插件的第一时间去插件管理里面去下载2.生成秘钥任意找一台服务器,生成即可。2.1已有秘钥无须在生成,只需要吧公钥配置到将要配置的s...

【说站】前端使用Image()函数加载base64图片不兼容无onload事件解决方法

【说站】前端使用Image()函数加载base64图片不兼容无onload事件解决方法

Image()函数将会创建一个新的HTMLImageElement实例。它的功能等价于 document.createElement('img')。正常情况下,我们使用下面方法加载图片...

【说站】嵌入式Linux下完成LCD屏文字显示(帧缓冲框架)

【说站】嵌入式Linux下完成LCD屏文字显示(帧缓冲框架)

帧缓冲框架是Linux下专门为显示类设备设计的接口,目的是将硬件和软件层分离开,方便应用层的编程,也方便应用层程序移植。帧缓冲框架向驱动层和应用层分别提供了一套标准接口,驱动层按照框架编写驱动,应用层...