我不知道定义var的规则。 为什么这不起作用? 有没有办法可以将多个变量从一个函数发送到另一个函数,还是我需要在每个函数中重新定义变量以使它们最后?
def first():
great = 1
print(great)
second()
def second(great):
# Do I need to re-define great here
if great == 1:
cool = 3001
third(great, cool)
def third(great, cool):
if great > 1:
print(cool)
# To make great = 1 here?
first()
答案 0 :(得分:2)
因为great
是在first()
范围内定义的,而不是second()
。您需要将功能更改为:
def first():
great = 1
# code
second(great)
def second(great):
if great == 1:
# code
答案 1 :(得分:2)
在Python中查找globals。这有效:
def first():
global great
great = 1
print(great)
second()
def second():
if great == 1:
print ("awesome")
else:
print("God damn it!")
first()
在原始功能中,great
仅位于first()
的本地范围内; second()
不知道great
是什么/哪里。使great
全局(即可用于其他功能)解决了您的问题。
编辑:上面的代码确实有效,但也许更好的做事方式(按照下面的建议),就像这样:
great = 1
def first():
print(great)
second()
def second():
if great == 1:
print("awesome")
else:
print("God damn it!")
或者更好的方法是实际传递 great
的值(作为参数)到每个函数。
答案 2 :(得分:1)
变量great
在first()
中本地定义。它在second()
中不存在。您正在测试不存在的变量的相等性。
将变量从一个函数传递给另一个函数......
def first():
great = 1
print(great)
second(great)
def second(great):
if great == 1:
print ("awesome")
else:
print("God damn it!")
first()