当我把这个放进去时,它会出现一个错误,我希望有人能帮助我找出我做错了什么。
x = 0
def func(var):
if var = True:
x = x - 1
else:
pass
错误来自x = x - 1,我不知道我做错了什么
为了在函数范围内使用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)
错误实际上来自前一行。您混淆了=
(赋值运算符)和==
(比较运算符)。正确的代码如下:
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
首先用赋值运算符=
代替等号运算符==
x = 0
def func(var):
if var == True:
x = x - 1
else:
pass
第二,不要检查表达式/值是否等于(==)True
/False
,特别是在python中。只要给出一个True
或true/False
或false的语句/变量。在python中,None(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