gpt4 book ai didi

Python 全局/局部变量

转载 作者:太空狗 更新时间:2023-10-29 18:29:05 27 4
gpt4 key购买 nike

为什么这段代码有效:

var = 0

def func(num):
print num
var = 1
if num != 0:
func(num-1)

func(10)

但是这个给出了一个“赋值前引用的局部变量‘var’”错误:

var = 0

def func(num):
print num
var = var
if num != 0:
func(num-1)

func(10)

最佳答案

因为在第一段代码中,您创建了一个局部变量 var 并使用了它的值,而在第二段代码中,您使用的是局部变量 var,没有定义它。

所以,如果你想让你的第二个函数工作,你需要声明:-

global var

在使用 var 之前的函数中。

def func(num):
print num
var = 1 <-- # You create a local variable
if num != 0:
func(num-1)

而在这段代码中:

def func(num):
print num
var = var <--- # You are using the local variable on RHS without defining it
if num != 0:
func(num-1)

更新:-

但是,根据@Tim 的评论,您不应在函数中使用global 变量。而是在使用变量之前定义变量,以便在 local scope 中使用它。通常,您应该尝试将变量的范围限制local,甚至在local 命名空间limit局部变量的范围,因为这样你的代码会更容易理解。

您增加变量的范围越多,它被不需要使用的外部源使用的机会就越大。

关于Python 全局/局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13091357/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com