python - 在用户定义的函数中访问全局框架

标签 python function frame

a = 4
def foo(x):
    a = 10
foo(2)
print(a)
#prints 4

上面的代码没有改变a

a = 4
def foo(x):
   return a + x
result = foo(10)
print(result)
#prints out 14

我不太明白这两者的行为有何不同。第二个,全局变量明显影响了foo中的局部变量。但是,如果我在 foo 中的第一个中更改 a,则全局框架中的 a 不会发生任何变化。发生了什么事?

最佳答案

如果你想在函数内改变一个全局变量,你应该使用global关键字:

a = 4
def foo(x):
    global a
    a = 10
foo(2)
print(a)  # prints 10

另见:

关于python - 在用户定义的函数中访问全局框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18882955/

相关文章:

python - Spark : Distribute low number of compute-intensive tasks via UDF

python - python中gtk.DrawingArea的透明背景

python - 如何在python中的视频上叠加帧号

python - 当前进程与其他进程之间的管道

python - 这种从具有 2 个类属性且 BeautifulSoup 的标签获取项目的方法是否正确?

c - 栈中auto变量占用的内存空间是多少

c - 无法显示结果

c# - 向查询添加多个参数

ios - 修改 UITextView 的框架使其看起来像一个对话泡泡

ios - 具有自动布局的 UIPageViewController 在 vi​​ewDidAppear 之前不会更新子框架