循环中的python变量
我有这样一个简单的代码:循环中的python变量,python,loops,Python,Loops,我有这样一个简单的代码: def function(): ciao = stuff + stuff2 return ciao def megaf(): stuff = 1 stuff2 = 3 for t in range(10): stuff += 1 stuff2 += 2 print function() megaf() 运行代码时出现的错误是 NameError:未定义全局名称“stuff” 我
def function():
ciao = stuff + stuff2
return ciao
def megaf():
stuff = 1
stuff2 = 3
for t in range(10):
stuff += 1
stuff2 += 2
print function()
megaf()
运行代码时出现的错误是
NameError:未定义全局名称“stuff”
我不明白为什么,因为我定义了变量
我尝试在函数外部同时定义变量stuff和stuff2,但是我得到了错误UnboundLocalError:在赋值之前引用了局部变量stuff。
我无法真正理解问题所在,因此我甚至无法尝试找出解决方案 变量stuff和stuff2仅在megaf中已知。 将stuff和stuff2传递到如下函数:
def function(stuff, stuff2):
ciao = stuff + stuff2
return ciao
def megaf():
stuff = 1
stuff2 = 3
for t in range(10):
stuff += 1
stuff2 += 2
print function(stuff, stuff2)
megaf()
def sum(num1, num2):
return num1 + num2
您必须向函数中添加参数
def function(stuff, stuff2)
def foo():
i = 7
def bar():
n = i + 7 #This will not work.
然后在调用函数时执行以下操作:
print function(stuff, stuff2)
这会将两个变量添加到函数中
def function(stuff, stuff2)
def foo():
i = 7
def bar():
n = i + 7 #This will not work.
您的总体代码应该如下所示:
def function(stuff, stuff2):
ciao = stuff + stuff2
return ciao
def megaf():
stuff = 1
stuff2 = 3
for t in range(10):
stuff += 1
stuff2 += 2
print function(stuff, stuff2)
megaf()
除非生成全局变量或插入参数,否则函数不会读取变量。在python中,如果在函数中生成变量,则该变量将在该函数的末尾停止存在
def function(stuff, stuff2)
def foo():
i = 7
def bar():
n = i + 7 #This will not work.
如果希望函数将两个数字相加,则应将这两个数字作为参数传递,如下所示:
def function(stuff, stuff2):
ciao = stuff + stuff2
return ciao
def megaf():
stuff = 1
stuff2 = 3
for t in range(10):
stuff += 1
stuff2 += 2
print function(stuff, stuff2)
megaf()
def sum(num1, num2):
return num1 + num2
然后是兆欧
在python中,变量有两种类型:局部变量和全局变量。局部变量只能从函数内部看到,它们在每次调用函数时都是不同的,而全局变量可以从任何地方看到,并且是持久的 也可以使用相同名称的全局变量和局部变量。如果函数中有一个局部变量,它就是名称所指的局部变量 为了确定函数中的变量是局部变量还是全局变量,您必须检查它的使用方式。基本上,假设它是本地的,除非: 它使用全局语句声明为全局 它没有被分配到。 在第一次尝试中,您在megaf的开头将其分配给stuff和stuff 2,因此它被认为是本地的,因为您没有将其声明为全局的。因此,您无法在megaf之外访问它们 在您尝试通过在megaf之外分配给stuff和stuff 2来解决此问题时,您仍然在megaf中分配给它们,使stuff和stuff 2成为megaf的本地对象。stuff和stuff2的用法指的是局部变量,但由于您在使用它们之前没有为局部变量赋值,请注意,stuff和stuff2的外部赋值是为全局变量赋值,这是不同的 有两个解决办法。首先,肮脏的一点是简单地宣布它们是全球性的:
def function():
ciao = stuff + stuff2
return ciao
def megaf():
global stuff, stuff2
stuff = 1
stuff2 = 3
for t in range(10):
stuff += 1
stuff2 += 2
print function()
这是肮脏的,因为使用全局变量通常被视为糟糕的做法。另一种解决方案是将它们作为参数传递给函数,如其他答案中所述。您必须将stuff和stuff2传递给函数。变量有一种称为作用域的东西。这需要深入的解释;例如,试着阅读。