Если вы передаете b через URL-адрес, он попадает в первое определение URL-адреса. Если вы не включите опциональный параметр, он попадает во второе определение, но переходит в тот же вид и использует предоставленное по умолчанию значение.
Ответ 3
Передача значения по умолчанию методу делает параметр необязательным.
В вашем случае вы можете сделать:
def calculate(request, b=None)
pass
Затем в вашем шаблоне вы можете использовать условие для другого поведения: