条件语句中的“赋值前引用”错误

时间:2015-10-04 17:13:30

标签: python-2.7 arguments kwargs

我的代码:

def sandwich(str, meat = 'ham', cheese = 'American'):

    if sandwich(str, meat = None, cheese = None):
        sandwich = str +' bread sandwich with turkey '
    else:
        sandwich = str +' bread sandwich with ' + meat + ' and '+ cheese + ' cheese'
    return sandwich 

我尝试使用定义参数。那没用。它给了我一个错误:

The local variable(sandwich) is being referenced before the assignment. 

请帮助!

3 个答案:

答案 0 :(得分:1)

您正在再次调用该函数,并且您将变量命名为与函数相同的名称。

纠正这两个问题,最终得到:

def sandwich(bread, meat='ham', cheese='american'):
    if meat == None and cheese == None:
        return '{} sandwich with turkey'.format(bread)
    return '{} sandwich with {} and {} cheese'.format(bread,
                                               meat, cheese)

答案 1 :(得分:0)

def sandwich(启动功能定义。 sandwich将是该函数的名称。

sandwich =开始分配。 sandwich将是变量的名称。因为你在函数体中执行此操作,变量将是 local ,并且Python假定您希望sandwich引用该变量而不是整个函数中的函数 of the function。

sandwich(str, meat = None, cheese = None)调用局部变量sandwich中保存的函数。 (请记住,当你在函数体中编写sandwich时,Python会假设你的意思是局部变量。)但是没有为该变量赋值,但是,你得到了上面提到的错误信息。

我想你想要做的是检查传递的函数参数。如果是这样,Burhan's answer会说明您如何做到这一点。

答案 2 :(得分:0)

{{1}}

我不明白这是如何运作的。如果价值观'火腿'和'美国'设置,第一个if条件将如何通过?这永远不会回归" {}面包夹心火鸡"因为值已设定。