前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 中的变量作用域

Python 中的变量作用域

作者头像
很酷的站长
发布2023-08-15 08:35:39
1720
发布2023-08-15 08:35:39
举报
文章被收录于专栏:站长的编程笔记

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

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

Example: Local Variable

代码语言:javascript
复制
def greet():
    name = 'Steve'
    print('Hello ', name)

Copy

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

Example: Local Variable

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

Copy

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

Example: Global Variable

代码语言:javascript
复制
name='John'def greet():
    print ("Hello ", name)

Copy

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

代码语言:javascript
复制
>>> greet()                            Hello Steve>>> name'Steve'

Copy

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

Example: Local and Global Variables

代码语言:javascript
复制
name = 'Steve'def greet():
    name = 'Bill'
    print('Hello ', name)

Copy

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

代码语言:javascript
复制
>>> greet()Hello Bill>>> name'Steve'

Copy

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

Example: Access Global Variables

代码语言:javascript
复制
name = 'Steve'def greet():
    global name
    name = 'Bill'
    print('Hello ', name)

Copy

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

代码语言:javascript
复制
>>> name                               
'Steve'>>> greet()                            Hello Bill>>> name                               
'Bill'

Copy

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

Example: Global Variables

代码语言:javascript
复制
name = 'Steve'def greet():
    globals()['name'] = 'James'
    name='Steve'
    print ('Hello ', name)

Copy

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

代码语言:javascript
复制
>>> name'Steve'>>> greet()    Hello Steve 
>>> name'James'

Copy

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档