0

我正在阅读 django 教程,我想知道当你在 views.py 中有 2 个同名的函数时会发生什么?

例如:

def results(request, poll_id):
   p = get_object_or_404(Poll, pk=poll_id)
   return render_to_response('polls/results.html', {'poll': p})

def results(request, poll_id):
    return HttpResponse("You're looking at the results of poll %s." % poll_id)

当我运行代码时,底部函数是被调用的函数。这是如何运作的?

4

2 回答 2

5

在 Python 中,方法和函数可以接受任意数量的参数;这否定了需要不同的函数“签名”来支持传递的不同类型的参数;这是函数重载的常见用例。见4.7.3。python 文档中的任意参数列表

调用第二个方法的原因是,当您使用相同的名称(和相同的参数列表)定义方法定义时,您只需覆盖方法定义。对于python,它与以下内容相同:

>>> x = 1
>>> x = 'Hello'
>>> print x
Hello

您只是再次重新定义了相同的方法,因此它使用最后一个定义。

于 2012-06-20T05:58:20.797 回答
1

如果我没记错的话,如果您需要扩展或覆盖视图方法,则需要使用类......或者使用“if”语句:)

https://docs.djangoproject.com/en/dev/topics/class-based-views/

在你的例子中,这只是python的正常行为......从左上角读取文件......然后它编译并使用它......

于 2012-06-20T05:51:38.000 回答