我正在使用python 3.6,我这样写:
zen = 1
zen2 = True
def test():
if zen == 1 and zen2 == True:
print ("hello")
global zen2
zen2 = False
else:
print ("hello 2")
test()
...并且输出没有任何信息! NADA!没有“ hello”也没有“ hello 2”,甚至没有错误!
即使我这样做:
zen = 1
zen2 = True
def test():
if zen == 1 :
if zen2 == True:
print ("hello")
global zen2
zen2 = False
else:
pass
else:
print ("hello 2")
test()
什么都没有!为什么?
编辑:对不起,每个人,在此之前我没有注意到“ else”没有冒号,因此对于某些人来说,它出现了语法错误,现在可能已修复,但仍然没有输出
编辑2:这将令人尴尬,因为由于我使用的是PyCharm并且我的其他文件处于打开状态(在该文件中,未执行任何功能),所以我不小心运行了另一个文件,而不是该“ zen”文件,所以我什么也没得到,因为它。实际上,我从这个“ zen”文件中收到了一个SyntaxError,即使我说这不是问题,这篇文章也确实帮助了我解决问题,并且它还提醒我在做任何事情之前都要仔细检查所有内容,所以是的,感谢那些谁帮助了我:)
答案 0 :(得分:0)
解决方案1:在函数中传递参数。
解决方案2:在声明之前声明“ zen”和“ zen2”为全局变量。
答案 1 :(得分:0)
您有一些逻辑错误。 使用全局之前,不能使用zend2。 您应该在函数的第一行将变量作为参数传递或声明为全局变量。
答案 2 :(得分:0)
我认为这就是您想要实现的目标:
def test(zen, zen2):
if zen == 1 and zen2 == True:
print ("hello")
zen2 = False
else:
print ("hello 2")
test(1, True)
正如一些评论所建议的,如果尝试运行您的代码,它将返回以下内容(在Linux GCC 4.8.2 / Python 3.6.1上):
SyntaxError: name 'zen2' is used prior to global declaration
如果您要更改条件的第一次评估后打印的值,请像这样重写它:
def test(zen, zen2):
if zen == 1 and zen2 == True:
print ("hello")
zen2 = False
test(zen, zen2)
else:
print ("hello 2")
test(1, True)