一般来说,python和编程的新手,需要帮助编辑变量本身

时间:2014-05-03 10:04:26

标签: python

当我把它放入其中时会出现错误,我想帮助找出我做错了什么。

x = 0

def func(var):  
    if var = True:  
        x = x - 1
    else:
        pass

错误来自x = x - 1,我无法弄清楚我做错了什么。

3 个答案:

答案 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函数,看它是否返回TrueFalse。有关详细信息,请参阅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