当我把它放入其中时会出现错误,我想帮助找出我做错了什么。
x = 0
def func(var):
if var = True:
x = x - 1
else:
pass
错误来自x = x - 1,我无法弄清楚我做错了什么。
答案 0 :(得分:4)
为了在函数范围内使用x
,您必须告诉编译器在哪里找x
所以将代码更改为:
x = 0
def func(var):
if var == True:
global x # look for x outside the scope of the function
x = x - 1
else:
pass
回到函数中也很高兴所以我建议:
x = 0
def func(var):
if var == True:
global x # look for x outside the scope of the function
x = x - 1
return None # or -> return x (to return the value of x)
答案 1 :(得分:2)
错误实际上来自之前的行。您将=
(赋值运算符)与==
(比较运算符)混淆。正确的代码如下:
def func(var):
global x
if var == True:
x -= 1 #also you can simply do it as x -= 1 instead of x = x - 1
else:
pass
最后,由于你没有在那里做任何事情,因此else: pass
没有任何意义。只需将您的代码缩短为:
def func(var):
global x
if var == True:
x -= 1
答案 2 :(得分:0)
首先,您使用赋值运算符=
而不是等于运算符==
x = 0
def func(var):
if var == True:
x = x - 1
else:
pass
其次从不检查表达式/值是否等于(==)到True
/ False
,尤其是在python中。只需提供一个True
或truthy / False
或falsey的语句/变量。在python中无空(null)空集合,如[],0,0.0,timedelta为零,False
都是假的,几乎所有其他都是真的。要自己测试一下,只需尝试将值或表达式传递给bool函数,看它是否返回True
或False
。有关详细信息,请参阅https://docs.python.org/2/library/stdtypes.html#truth-value-testing。
x = 0
def func(var):
if var:
x = x - 1
else:
pass
第三,您可以查找但不能重新分配在同一模块中声明的变量 功能之外。除非你宣布它是全球性的。所以你可以不用全局打印
x = 0
def func(var):
if var:
print x
但不重新分配。你也不需要else分支或return语句(python默认返回None),所以它只是
x = 0
def func(var):
if var:
global x
x = x - 1