所以做了一个简单的例子来帮助我更好地理解范围。
据我所知,函数内的变量仅对该函数是局部的。如果要使用函数外部的变量与函数内的局部变量同名,则可以使用 global 关键字告诉函数忽略具有该名称的任何局部变量而仅使用全局变量。
所以这个程序应该先打印全局变量值,然后调用函数并再次打印全局变量,因为它应该忽略局部变量,但无论如何它都会打印局部变量。 Python导师向我展示了它完全跳过了全局语句。
cheese = 99
def func():
global cheese
cheese = 100
print(f"Global cheese is {cheese}")
print(f"Global cheese is {cheese}")
func()
<块引用>
输出:
全球奶酪是 99
全球奶酪是 100
然后当我在 print 语句之前调用该函数时,变量被更改为局部变量的值..这是为什么?
cheese = 99
def func():
global cheese
cheese = 100
print(f"Global cheese is {cheese}")
func()
print(f"Global cheese is {cheese}")
<块引用>
输出:
全球奶酪是 100
全球奶酪是 100
答案 0 :(得分:0)
但是您声明要在函数中使用全局变量。因此,当您分配一个值时,它会更改全局变量。
cheese = 99
def func():
global cheese # Declares that you want to use global cheese variable
cheese = 100 # This updates the global cheese variable
print(f"func() cheese is {cheese}")
def local_func():
cheese = 101
print(f"local_func() cheese is {cheese}")
print(f"Global cheese is {cheese}")
func()
print(f"Global cheese is {cheese}")
local_func()
print(f"Global cheese is {cheese}")
结果是:
Global cheese is 99
func() cheese is 100
Global cheese is 100
local_func() cheese is 101
Global cheese is 100
答案 1 :(得分:0)
global 关键字用于在函数内部创建全局变量
在您的情况下,当您尝试编写 global cheese
时,它会重新创建一个名为 cheese 的全局变量,您将其赋值为 100。因此它会忽略先前创建的值为 99 的 cheese 变量
here 是对 global 关键字的更好解释
答案 2 :(得分:0)
当您的函数运行时,它使用全局 cheese
变量而不是您提到的局部 cheese
变量。
因此,当您的函数运行 cheese = 100
语句时,它指的是您在程序开头声明的全局 cheese
变量。该语句不会创建新的本地 cheese
变量。
因此,运行 func()
会将全局变量更新为 100
。