智慧檔案管理與大數(shù)據(jù)解決方案的領(lǐng)航者,讓信息價值超越期待
電 話:18937133779
網(wǎng) 址:http://bestguitarvideos.com
郵 箱:zboao@qq.com
用django-admin startproject命令創(chuàng)建新項(xiàng)目,并進(jìn)入該文件夾
打開項(xiàng)目設(shè)置文件 locallibrary/locallibrary/settings.py
找到 INSTALLED_APPS 列表里的定義。 如下所示,在列表的最后添加新的一行
聲明模型級元數(shù)據(jù)class Meta
定義 ModelAdmin類(描述布局),并將其注冊到模型中,用于管理界面改變模型的展示方式 打開 admin.py 在目錄應(yīng)用程序(/locallibrary/catalog/admin.py)
使用list_display 向視圖添加其他字段
在創(chuàng)建框架網(wǎng)站]時,自動啟用了身份驗(yàn)證,無需再執(zhí)行任何操作
可以參考下面的路徑去學(xué)習(xí),祝你學(xué)有所成,公司最近在人工智能和自然語言處理的項(xiàng)目后端項(xiàng)目,我也是網(wǎng)上找了很多知識,最后給自己列了一個學(xué)習(xí)的目錄,按照這個在復(fù)習(xí)并在總結(jié),希望能幫到你:
django的后臺擴(kuò)展有擴(kuò)展模型、擴(kuò)展模型字段(field)方法,但我還是最喜歡這種擴(kuò)展方式(來自django的官方文檔,非常適合自定義):
轉(zhuǎn)自:
原理很簡單,就是用在url.py中添加一條url配置覆蓋掉后臺默認(rèn)的url處理,然后就可以隨心所欲的編寫自己的view了
顯而易見,對數(shù)據(jù)編輯工作來說,該管理界面極為有用(想象一下)。如果用于完成某種數(shù)據(jù)的錄入工作,該管理界面實(shí)在是無人能及。我們猜想本書絕大多數(shù)讀者都有成堆數(shù)據(jù)錄入任務(wù)。
Django管理接口特別關(guān)注那些沒有技術(shù)背景的用戶來使用數(shù)據(jù)錄入;這也是該功能的開發(fā)目的。在Django最初開發(fā)地報社,開發(fā)一個典型的在線市政供水質(zhì)量報告系統(tǒng),需求如下:
負(fù)責(zé)該題材的記者與某個開發(fā)人員會面,提交現(xiàn)有數(shù)據(jù)。
開發(fā)人員圍繞該數(shù)據(jù)設(shè)計一個模型,并為該記者開發(fā)出管理界面。
在記者將數(shù)據(jù)錄入 Django 的同時,程序員就可以專注于開發(fā)公眾訪問界面了(最有趣的部分?。?br>
換句話說,Django 管理接口之所以存在的首要目的是為了方便內(nèi)容編輯人員和程序員同時開展工作。
當(dāng)然,除了顯而易見的數(shù)據(jù)錄入任務(wù)之外,我們發(fā)現(xiàn)管理界面在其他一些情況下有是很有用處的。
CrqrWV <a href=”“>xwyekefymefu</a>, [url=]eycmfqtvgmvb[/url], [link=]ibbcerwyzvhq[/link],
管理獲得的數(shù)據(jù) :很少有真實(shí)數(shù)據(jù)輸入會和像 這樣的站點(diǎn)相關(guān)聯(lián),因?yàn)槎鄶?shù)數(shù)據(jù)來自自動生成的源頭。然而,當(dāng)所獲取的數(shù)據(jù)出錯而導(dǎo)致麻煩時,能夠便捷地找到并修改出錯數(shù)據(jù)將會有助于問題解決。
無需或者僅需略為定制之后, Django 管理界面就能處理絕大部分常見情形。然而,正是因?yàn)樵谠O(shè)計上極力折衷, Django 管理界面能夠很好地處理這種常見情形也就意味著它無法同樣處理其它一些編輯模型。
4yQjmU <a href=”“>kdqfnmmekszw</a>, [url=]zusybryiqeir[/url], [link=]grlqejhxwprt[/link],
管理之道
BmuFnt <a href=”“>ifhkpydljkaf</a>, [url=]mqitqhmcazco[/url], [link=]qcmerxzxnmhj[/link],
受信任用戶編輯結(jié)構(gòu)化的內(nèi)容。
是的,這非常的簡單,但這種簡單是建立在一整堆假定之上的。Django 管理界面的全部設(shè)計理念均直接遵循這些假定,因此讓我們深入理解一下這些后續(xù)小節(jié)中所出現(xiàn)術(shù)語的含義。
受信任用戶
管理界面被設(shè)計成由你這樣的開發(fā)人員所 信任 的人使用。這里所指的并非只是通過身份驗(yàn)證的人;而是說 Django 假定可以相信內(nèi)容編輯者只會做對的事情。
反過來說,這也就意味著如果你信任用戶,他們無需征得許可就能編輯內(nèi)容,也沒有人需要對他們的編輯行為進(jìn)行許可。另一層含義是,盡管認(rèn)證系統(tǒng)功能強(qiáng)大,但到本書寫作時為止,它并不支持對象級基礎(chǔ)的訪問限制。如果你允許某人對自己的新聞報道進(jìn)行編輯,你必須能夠確信該用戶不會未經(jīng)許可對其他人的報道進(jìn)行編輯。
編輯
Django 管理界面的首要目的是讓用戶編輯數(shù)據(jù)。乍一看這是顯而易見的,但仔細(xì)一想?yún)s又變得有點(diǎn)難以捉摸和不同凡響。
舉例來說,雖然管理界面非常便于查驗(yàn)數(shù)據(jù)(如剛才所討論的那樣),但這并不是它的設(shè)計初衷。比如我們在第 12 章中談到的,它缺少視圖許可。Django 假定如果某人在管理界面中可以查看內(nèi)容,那么也可以進(jìn)行編輯。
還有件更重要的事情要注意,那就是對于遠(yuǎn)程調(diào)用工作流的缺乏。如果某個特定任務(wù)由一系列步驟組成,沒有任何機(jī)制確保這些步驟能夠以某個特定順序完成。 Django 管理界面專注于 編輯 ,而不關(guān)心修改周邊的活動。對工作流的這種回避也源自于信任原則:管理界面的設(shè)計理念是工作流乃人為事物,無需在代碼中實(shí)現(xiàn)。
最后,要注意的是管理界面中缺少聚合。也就是說,不支持顯示總計、平均值之類的東西。再次重申,管理界面只用于編輯——它預(yù)期你將通過定義視圖來完成其它所有工作。
結(jié)構(gòu)化的內(nèi)容
30CEN9 <a href=”“>bxyzitjhvwis</a>, [url=]ylhgcrwsnuue[/url], [link=]mecoeqqxpail[/link],
就此打住
現(xiàn)在可以肯定的是,Django 的管理界面 并不 打算成為所有人的萬能工具;相反我們選擇了專心做一件事情,并把它完成得盡善盡美。
SaPQz9 <a href=”“>fmvbpdngtcts</a>, [url=]tvwreqwomvco[/url], [link=]nwfgxlxpodeq[/link],
必須記住,盡管管理界面很復(fù)雜,但它始終只是一個應(yīng)用程序。只要有充足的時間,任何Django的開發(fā)者都能做到admin接口做到的所有事。 因此,我們需要寄希望于將來會有一個完全不同的admin接口會出現(xiàn),這個新的接口擁有一系列不同的前提假設(shè),并且工作方式也完全不同。
最后要指出的是,在本文寫作之時,Django 開發(fā)者們正在進(jìn)行一個新的管理界面的開發(fā)工作,該版本將提供更多定制靈活性。當(dāng)你閱讀本文時,這些新特性也許已經(jīng)進(jìn)入了真實(shí)的 Django 發(fā)布之中。你可以向 Django 社區(qū)的某些人了解是否已經(jīng)整合了 newforms-admin 主干代碼。
定制管理模板
lrYxwt <a href=”“>uokhfgxirpcl</a>, [url=]wqhpuiouinaf[/url], [link=]fpatpucympci[/link],
現(xiàn)在,我們來看看如何來快速定制admin管理接口的外觀。 第6章講到了一些最常見的任務(wù):修改商標(biāo)(為那些討厭藍(lán)色的尖發(fā)老板),或者提供一個自定義的form。
更進(jìn)一步的目標(biāo)常常會包含,改變模板中的一些特殊的項(xiàng)。每一種admin的視圖,包括修改列表、編輯表單、刪除確認(rèn)頁以及歷史視圖,都有一個與之相關(guān)聯(lián)的模板可以以多種方式來進(jìn)行覆蓋。
首先,你可以在全局上覆蓋模板。admin視圖使用標(biāo)準(zhǔn)的模板載入機(jī)制來查找模板。所以如果你在模板目錄中創(chuàng)建了一個新的模板,Django會自動地加載它。全局的模板在表17-1中列出。
Fd2cvv <a href=”“>fphafdvvmhea</a>, [url=]mompqgnztmob[/url], [link=]oamzxjphpsxv[/link],
大多數(shù)時候,你可能只是想修改一個單獨(dú)的對象或應(yīng)用程序,而不是修改全局性的設(shè)定。因此,每個admin視圖總是先去查找與模型或應(yīng)用相關(guān)的模板。這些視圖尋找模板的順序如下:
admin/<app_label>/<object_name>/<template>.html
JRmAl2 <a href=”“>kqeldaxlpkep</a>, [url=]ihzkjznjrsqj[/url], [link=]sqhirlipxjfo[/link],
admin/<template>.html
例如,在 books 這個應(yīng)用程序中, Book 模塊的添加/編輯表單的視圖會按如下順序查找模板:
admin/books/book/change_form.html
admin/books/change_form.html
admin/change_form.html
自定義模型模板
大多數(shù)時候,你想使用第一個模板來創(chuàng)建特定模型的模板。 通常,最好的辦法是擴(kuò)展基模板和往基模板中定義的區(qū)塊 中添加信息。
例如,我們想在那個書籍頁面的頂部添加一些幫助文本。 可能是像圖17-1所示的表單一樣的東西。
圖 17-1. 一個自定義管理編輯表單.
這做起來非常容易:只要建立一個 admin/bookstore/book/change_form.html 模板,并輸入下面的代碼:
{% extends "admin/change_form.html" %}
{% block form_top %}
<p>Insert meaningful help message here...</p>
{% endblock %}
mGrlX4 <a href=”“>omnhyzkldddt</a>, [url=]ydlrelntzksj[/url], [link=]zzizrvybyaol[/link],
自定義JavaScript
這些自定義模型模板的常見用途包括,給admin頁面增加自定義的javascript代碼來實(shí)現(xiàn)一些特殊的視圖物件或者是客戶端行為。
幸運(yùn)的是,這可以更簡單。每一個admin模板都定義了 {% block extrahead %} ,你可以在 <head> 元素中加入新的內(nèi)容。例如你想要增加jQuery() 到你的admin歷史中,可以這樣做:
{% extends "admin/object_history.html" %}
{% block extrahead %}
<script src="" type="text/javascript"></script>
<script type="text/javascript">
// code to actually use jQuery here...
</script>
{% endblock %}
備注
我們并不知道你為什么需要把jQuery放入到歷史頁中,但是這個例子可以被用到任何的模板中。
TYy7is <a href=”“>hpswriedwzmw</a>, [url=]bvkzcktnoefm[/url], [link=]wkbudpcvacdz[/link],
創(chuàng)建自定義管理視圖
現(xiàn)在,想要往Django的admin管理接口添加自定義行為的人,可能開始覺得有點(diǎn)奇怪了。我們這里所講的都是如何改變admin管理接口的外觀。他們都在喊:如何才能改變admin管理接口的內(nèi)部工作機(jī)制。
首先要提的一點(diǎn)是,這并不神奇。admin管理接口并沒有做任何特殊的事情,它只不過是和其他一些視圖一樣,簡單地處理數(shù)據(jù)而已。
確實(shí),這里有相當(dāng)多的代碼; 它必須處理各種各樣的操作,字段類型和設(shè)置來展示模型的行為. 當(dāng)你注意到ADMIN界面只是一系列視圖(Views)的集合,增加自定義的管理視圖就變得容易理解了。
作為舉例,讓我們?yōu)榈诹轮械膱D書申請?jiān)黾右粋€出版商報告的視圖。建立一個admin視圖用于顯示被出版商分好類的書的列表,一個你要建立的自定義admin報告視圖的極典型的例子。
首先,在我們的URLconf中連接一個視圖。插入下面這行:
(r'^admin/books/report/$', 'mysite.books.admin_views.report'),
在將這行加入這個admin視圖之前,原本的URLconf應(yīng)該是這樣:
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^admin/bookstore/report/$', 'bookstore.admin_views.report'),
(r'^admin/', include('django.contrib.admin.urls')),
)
為什么要將定制試圖置于管理內(nèi)容 之前 呢?回想一下,Django 是按照順序處理 URL 匹配式的。管理內(nèi)容幾乎匹配內(nèi)容點(diǎn)之后所有的東西,因此如果我們把這幾行的順序顛倒一下, Django 將會為該匹配式找到一個內(nèi)建管理視圖,并將試圖在 books 應(yīng)用程序中為 Report 模型再入更新列表,而這卻是不存在的。
現(xiàn)在我們開始寫視圖。為了簡單起見,我們只把所有書籍加載到上下文中,讓模板用 {% regroup %} 標(biāo)簽來處理分組操作。創(chuàng)建 books/admin_views.py 文件并寫入以下內(nèi)容:
from mysite.books.models import Book
from django.template import RequestContext
from django.shortcuts import render_to_response
from django.contrib.admin.views.decorators import staff_member_required
def report(request):
return render_to_response(
"admin/books/report.html",
{'book_list' : Book.objects.all()},
RequestContext(request, {}),
)
report = staff_member_required(report)
因?yàn)槲覀儼逊纸M操作留給了模板,該視圖非常簡單。然而,有幾段微妙的細(xì)節(jié)值得我們搞清楚。
我們使用了 django.contrib.admin.views.decorators 中的 staff_member_required 修飾器。該修飾器與第 12 章中討論的 login_required 類似,但它還檢查所指定的用戶是否標(biāo)記為內(nèi)部人員,以決定是否允許他訪問管理界面。
該修飾器保護(hù)所有內(nèi)容的管理視圖,并使得視圖的身份驗(yàn)證邏輯匹配管理界面的其它部分。
我們在 admin/ 之下解析了一個模板。盡管并非嚴(yán)格要求如此操作,將所有管理模板分組放在 admin 目錄中是個好的做法。我們也將應(yīng)用程序所有的模板放置在名叫 books 的目錄中,這也是最佳實(shí)踐。
我們將 RequestContext 用作 render_to_response 的第三個參數(shù)(``context_instance`` )。這就確保了模板可訪問當(dāng)前用戶的信息。
參看第十章了解更多關(guān)于 RequestContext 的信息。
最后, 我們?yōu)檫@個視圖做一個模板。我們將擴(kuò)展內(nèi)置管理模板, 以使該視圖明確地成為管理界面的一部分.
{% extends "admin/base_site.html" %}
{% block title %}List of books by publisher{% endblock %}
{% block content %}
<div id="content-main">
<h1>List of books by publisher:</h1>
{% regroup book_list|dictsort:"publisher.name" by publisher as books_by_publisher %}
{% for publisher in books_by_publisher %}
<h3>{{ publisher.grouper }}</h3>
<ul>
{% for book in publisher.list|dictsort:"title" %}
<li>{{ book }}</li>
{% endfor %}
</ul>
{% endfor %}
</div>
{% endblock %}
通過擴(kuò)展 admin/base_site.html , 我們沒費(fèi)絲毫氣力就得到了 Django 管理界面的外觀。圖 17-2 我展示了像這樣的一個最終結(jié)果。
圖 17-2. 一個自定義按出版商歸類的圖書管理視圖
使用該技術(shù),你可以向管理界面中添加任何你夢想中的東西。需要記住的是這些被叫做定制管理視圖實(shí)際不過是普通的 Django 視圖,你可以使用在本書其它部分所學(xué)到的技術(shù)制作出符合自己需要的復(fù)雜管理界面。
覆蓋內(nèi)置視圖
有時缺省的管理視圖無法完成某項(xiàng)工作。你可以輕松地?fù)Q上自己的定制視圖;只需要用自己的 URL 遮蔽內(nèi)建的管理視圖。也就是說,如果在 URLConf 中你的視圖出現(xiàn)在缺省管理視圖之前,你的視圖將取代缺省視圖被調(diào)用。
舉例來說,我們可以用一個讓用戶簡單輸入 ISBN 的窗體來取代內(nèi)建的書籍創(chuàng)建視圖。然后,我們可以從 查詢該書的信息,并自動地創(chuàng)建對象。
這樣的視圖的代碼留給讀者作為一個練習(xí), 重要的部分是這個 URLconf 代碼片斷:
(r'^admin/bookstore/book/add/$', 'mysite.books.admin_views.add_by_isbn'),
如果這個代碼片段在 URLConf 中出現(xiàn)于管理 URL 之前, add_by_isbn 視圖將完全取代標(biāo)準(zhǔn)的管理視圖。
按照這種方式,我們可以替換刪除確認(rèn)頁、編輯頁面或者管理界面的其它任何部分。
這個關(guān)鍵取決你自身的基礎(chǔ)條件和興趣方向。
python是個比較成熟的跨平臺的通用型腳本語言,有非常完善龐大的內(nèi)置模塊和第三方擴(kuò)展模塊。
python幾乎什么都能干,但是自身性能較低。it自動化運(yùn)維,網(wǎng)絡(luò)爬蟲,數(shù)據(jù)分析是優(yōu)勢的領(lǐng)域
node.js采用事件驅(qū)動、異步編程,為網(wǎng)絡(luò)服務(wù)而設(shè)計
"node.js 是服務(wù)器端的 javascript 運(yùn)行環(huán)境,它具有無阻塞(non-blocking)和事件驅(qū)動(event-driven)等的特色,node.js 采用 v8 引擎,同樣,node.js 實(shí)現(xiàn)了類似 apache 和 nginx 的web服務(wù),讓你可以通過它來搭建基于 javascript 的 web app。"
當(dāng)我知道可以做這些之后,我特別想會。因?yàn)檎撐牟殚?、答案確認(rèn)查詢;想知道豆瓣8分以上電影,或者穿越類的電影、處理工資數(shù)據(jù)考核表等。
可以干什么
1、上學(xué)吧答案神器 主要實(shí)現(xiàn)的是無限制獲取上學(xué)吧網(wǎng)站上的題目答案(繞過 IP 限制),并實(shí)現(xiàn)了自動識別驗(yàn)證碼,只用輸入某個題目的網(wǎng)址,即可一鍵獲取答案,速度非常快?!赶胍?,自己或者給孩子輔導(dǎo)作業(yè)必備?。俊?/p>
2、抓取某系統(tǒng)內(nèi)全部學(xué)生姓名學(xué)號及選課信息
3、掃描研究生系統(tǒng)上的弱密碼用戶、模擬登錄圖書館系統(tǒng)并自動續(xù)借
4、給釣魚網(wǎng)站批量提交垃圾信息 經(jīng)常會收到含有釣魚網(wǎng)站鏈接的短信的,一般都是盜取 QQ 密碼的偏多,其實(shí)可以使用 Python 來批量給對方的服務(wù)器提交垃圾數(shù)據(jù)(需要先抓包),這樣騙子看到信息之后就不知道哪些是真的哪些是假的了,說不定可以解救一部分填了密碼的同學(xué)。
5、網(wǎng)易云音樂批量下載 可以批量下載網(wǎng)易云音樂熱歌榜的歌曲,可以自己設(shè)定數(shù)量,速度非常快。
6、批量下載讀者雜志某一期的全部文章
7、 獲取城市PM2.5濃度和排名
8、爬取某網(wǎng)商品價格信息
你都用 Python 來做什么?
那Python 作為一種功能強(qiáng)大的編程語言,因其簡單易學(xué)而受到很多開發(fā)者的青睞。那么,Python 的應(yīng)用領(lǐng)域有哪些呢?
Python 的應(yīng)用領(lǐng)域非常廣泛,幾乎所有大中型互聯(lián)網(wǎng)企業(yè)都在使用 Python 完成各種各樣的任務(wù),例如國外的 Google、Youtube、Dropbox,國內(nèi)的百度、新浪、搜狐、騰訊、阿里、網(wǎng)易、淘寶、知乎、豆瓣、汽車之家、美團(tuán)等等。概括起來,Python 的應(yīng)用領(lǐng)域主要有如下幾個。
Web應(yīng)用開發(fā)
Python 經(jīng)常被用于 Web 開發(fā),盡管目前 PHP、JS 依然是 Web 開發(fā)的主流語言,但 Python 上升勢頭更勁。尤其隨著 Python 的 Web 開發(fā)框架逐漸成熟(比如 Django、flask、TurboGears、web2py 等等),程序員可以更輕松地開發(fā)和管理復(fù)雜的 Web 程序。例如,通過 mod_wsgi 模塊,Apache 可以運(yùn)行用 Python 編寫的 Web 程序。Python 定義了 WSGI 標(biāo)準(zhǔn)應(yīng)用接口來協(xié)調(diào) HTTP 服務(wù)器與基于 Python 的 Web 程序之間的通信。舉個最直觀的例子,全球最大的搜索引擎 Google,在其網(wǎng)絡(luò)搜索系統(tǒng)中就廣泛使用 Python 語言。另外,我們經(jīng)常訪問的集電影、讀書、音樂于一體的豆瓣網(wǎng)(如圖 1 所示),也是使用 Python 實(shí)現(xiàn)的。
圖1用Python實(shí)現(xiàn)的豆瓣網(wǎng)
不僅如此,全球最大的視頻網(wǎng)站 Youtube 以及 Dropbox(一款網(wǎng)絡(luò)文件同步工具)也都是用 Python 開發(fā)的。
自動化運(yùn)維
很多操作系統(tǒng)中,Python 是標(biāo)準(zhǔn)的系統(tǒng)組件,大多數(shù) Linux 發(fā)行版以及 NetBSD、OpenBSD 和 Mac OS X 都集成了 Python,可以在終端下直接運(yùn)行 Python。有一些 Linux 發(fā)行版的安裝器使用 Python 語言編寫,例如 Ubuntu 的 Ubiquity 安裝器、Red Hat Linux 和 Fedora 的 Anaconda 安裝器等等。另外,Python 標(biāo)準(zhǔn)庫中包含了多個可用來調(diào)用操作系統(tǒng)功能的庫。例如,通過 pywin32 這個軟件包,我們能訪問 Windows 的 COM 服務(wù)以及其他 Windows API;使用 IronPython,我們能夠直接調(diào)用 .Net Framework。通常情況下,Python 編寫的系統(tǒng)管理腳本,無論是可讀性,還是性能、代碼重用度以及擴(kuò)展性方面,都優(yōu)于普通的 shell 腳本。
人工智能領(lǐng)域
人工智能是項(xiàng)目非?;鸬囊粋€研究方向,如果要評選當(dāng)前最熱、工資最高的 IT 職位,那么人工智能領(lǐng)域的工程師最有話語權(quán)。而 Python 在人工智能領(lǐng)域內(nèi)的機(jī)器學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)、深度學(xué)習(xí)等方面,都是主流的編程語言??梢赃@么說,基于大數(shù)據(jù)分析和深度學(xué)習(xí)發(fā)展而來的人工智能,其本質(zhì)上已經(jīng)無法離開 Python 的支持了,原因至少有以下幾點(diǎn):
目前世界上優(yōu)秀的人工智能學(xué)習(xí)框架,比如 Google 的 TransorFlow(神經(jīng)網(wǎng)絡(luò)框架)、FaceBook 的 PyTorch(神經(jīng)網(wǎng)絡(luò)框架)以及開源社區(qū)的 Karas 神經(jīng)網(wǎng)絡(luò)庫等,都是用 Python 實(shí)現(xiàn)的;微軟的 CNTK(認(rèn)知工具包)也完全支持 Python,并且該公司開發(fā)的 VS Code,也已經(jīng)把 Python 作為第一級語言進(jìn)行支持。Python 擅長進(jìn)行科學(xué)計算和數(shù)據(jù)分析,支持各種數(shù)學(xué)運(yùn)算,可以繪制出更高質(zhì)量的 2D 和 3D 圖像??傊?,AI 時代的來臨,使得 Python 從眾多編程語言中脫穎而出,Python 作為 AI 時代頭牌語言的位置,基本無人可撼動!最后,如果你的時間不是很緊張,并且又想快速的提高,最重要的是不怕吃苦,建議你可以價位@762459510 ,那個真的很不錯,很多人進(jìn)步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~
網(wǎng)路爬蟲
Python 語言很早就用來編寫網(wǎng)絡(luò)爬蟲。Google 等搜索引擎公司大量地使用 Python 語言編寫網(wǎng)絡(luò)爬蟲。從技術(shù)層面上將,Python 提供有很多服務(wù)于編寫網(wǎng)絡(luò)爬蟲的工具,例如 urllib、Selenium 和 BeautifulSoup 等,還提供了一個網(wǎng)絡(luò)爬蟲框架 Scrapy。
科學(xué)計算
自 1997 年,NASA 就大量使用 Python 進(jìn)行各種復(fù)雜的科學(xué)運(yùn)算。并且,和其它解釋型語言(如 shell、js、PHP)相比,Python 在數(shù)據(jù)分析、可視化方面有相當(dāng)完善和優(yōu)秀的庫,例如 NumPy、SciPy、Matplotlib、pandas 等,這可以滿足 Python 程序員編寫科學(xué)計算程序。
游戲開發(fā)
很多游戲使用 C++ 編寫圖形顯示等高性能模塊,而使用 Python 或 Lua 編寫游戲的邏輯。和 Python 相比,Lua 的功能更簡單,體積更??;而 Python 則支持更多的特性和數(shù)據(jù)類型。比如說,國際上指明的游戲 Sid Meier's Civilization(文明,如圖 2 所示)就是使用 Python 實(shí)現(xiàn)的。
圖2Python開發(fā)的游戲
除此之外,Python 可以直接調(diào)用 Open GL 實(shí)現(xiàn) 3D 繪制,這是高性能游戲引擎的技術(shù)基礎(chǔ)。事實(shí)上,有很多 Python 語言實(shí)現(xiàn)的游戲引擎,例如 Pygame、Pyglet 以及 Cocos 2d 等。以上也僅是介紹了 Python 應(yīng)用領(lǐng)域的“冰山一角”,例如,還可以利用 Pygame 進(jìn)行游戲編程;用 PIL 和其他的一些工具進(jìn)行圖像處理;用 PyRo 工具包進(jìn)行機(jī)器人控制編程,等等。有興趣的讀者,可自行搜索資料進(jìn)行詳細(xì)了解。