首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我在更改/更新python中的全局变量时遇到了问题

我在更改/更新python中的全局变量时遇到了问题
EN

Stack Overflow用户
提问于 2019-03-15 10:25:54
回答 3查看 41关注 0票数 0

所以我在理解全局变量的基础上遇到了困难,因为我是python的初学者。我想尝试改变一个全局变量,但不幸的是它不起作用。你们谁能解释一下并帮我解决我的问题。谢谢!!

代码语言:javascript
运行
复制
global x
x = 10
def NEWX():
     print (x)
     x = x + 5
     print (x)
print (x)
NEWX()
print(x)

#this displays 10 10 15 10
EN

回答 3

Stack Overflow用户

发布于 2019-03-15 10:42:30

尝试这个重构:

代码语言:javascript
运行
复制
x = 10


def new_x():
    global x
    print(x)
    x = x + 5
    print (x)


print(x)
new_x()
print(x)

# prints 10 10 15 15

我无法运行你的原始代码,它抱怨x在函数中没有定义。在函数的作用域内,x是未知的。它在更高的范围内是已知的,但在您的函数中不是。这就是为什么global x语句需要在函数中--让python知道从外部作用域使用x

票数 0
EN

Stack Overflow用户

发布于 2019-03-15 10:48:38

代码语言:javascript
运行
复制
x = 10

def NEWX():
     global x
     print (x)
     x = x + 5
     print (x)

print (x)
NEWX()
print(x)

全局变量规则:

  • 全局关键字在函数外部没有effect
  • Variable在函数外部是全局的缺省情况下需要
  • 全局关键字来读取和写入函数内的全局变量
票数 0
EN

Stack Overflow用户

发布于 2019-03-15 11:10:13

在您的代码中,首先打印x的值,然后调用函数NEWX():,该函数打印x,然后将5加到x上并打印新值。调用该函数后,将再次打印x。

要了解发生了什么,请查看包含修复的示例:

代码语言:javascript
运行
复制
 x = 10

def NEWX():
    print (x)
    global x
    x = x + 5
    print (x)
print (x)
NEWX()
print(x)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55174686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档