我的代码:
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.
请帮助!
答案 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条件将如何通过?这永远不会回归" {}面包夹心火鸡"因为值已设定。