python的成员运算符,如何运用成员运算符实现站内搜索

前面介绍了算术运算符、比较运算符和赋值运算符,这一节来讲一讲python中的成员运算符,顺便举个如何实现站内搜索功能的例子。

Python的成员运算符,运用成员运算符开发简单的站内搜索需求

看看这个标题应该就能想象到Python的成员运算符的总要性和价值。

python的成员运算符非常简单,就in和not in两个

运算符描述实例
in如果指定的值存在于指定的数据结构中,则返回True,否则返回False>>> 1 in [ 0,1,3 ] #返回True
not in如果指定的值不存在于指定的数据结构中,则返回True,否则返回False>>> 1 not in [ 0,1,3 ] #返回False

利用成员运算符实现站内搜索需求

Python的web框架Django为我们封装了很好的数据库查询函数,我们直接利用就行。这里简单介绍一下搜索查询,日后讲解到Django框架的时候会详解。

def search(request):
    keyword = request.GET.get('formkeyword') #这里用requet.GET.get()的django内置函数获取前端发送的搜索数据
    articles = Article.objects.all().filter(title__icontains=keyword).order_by('-views')
    return render(request, 'search.html', locals())
 # title__icontains=keyword就是相当于运用成员运算符in和not in来判断数据库中的标题是否包含搜索的关键词,title则是我们在模型设计中命名的字段名,也就是数据库的字段,这是一个查询数据库的操作过程。

上面的代码虽然比较少,但是相对来说,也是一个至少能够实现搜索功能的视图函数。视图函数是Django框架中的“名词”,python语法当中并没有。

除此之外,我们不难发现,python的代码其实很简洁,就跟阅读英文一样!其中Article.objects.all()就是在数据库中查找所有文章的标题,Article是我们设计的模型之一,filter()则是过滤,过滤出符合条件的文章,条件就是用contains来判断,相当于python语法当中的in和not in,icontains表示的是不区分大小写,然后order_by()就是排序函数,views是阅读量,也是模型设计中的字段。


搜索引擎的功能应该是怎么实现的

其实,我们可以展开联想,想象一下搜索引擎的功能会是怎么个实现方法?!首先,用爬虫在互联网中爬取网页,并暂时存储在某服务器中,相当于缓存,然后就用成员运算符在这些缓存的网页中匹配包含搜索关键词的标题,再根据文章的权重进行排序(加权重还需要另外的算法,就像上面代码中的order_by()django内置函数,当然处理算法不同)。至于事实上是不是这样,就不清楚了。


全栈后端 / python教程 :


























Copyright © 2022-2024 笨鸟工具 x1y1z1.com All Rights Reserved.