堅(jiān)決不用python這種垃圾(java難學(xué)嗎 大概要學(xué)多久)
- 夕逆IT
- 數(shù)據(jù)庫(kù)
- 2023-08-13
- 325
大家好,堅(jiān)決不用python這種垃圾相信很多的網(wǎng)友都不是很明白,包括java難學(xué)嗎 大概要學(xué)多久也是一樣,不過(guò)沒(méi)有關(guān)系,接下來(lái)就來(lái)為大家分享關(guān)于堅(jiān)決不用python這種...
大家好,堅(jiān)決不用python這種垃圾相信很多的網(wǎng)友都不是很明白,包括java難學(xué)嗎 大概要學(xué)多久也是一樣,不過(guò)沒(méi)有關(guān)系,接下來(lái)就來(lái)為大家分享關(guān)于堅(jiān)決不用python這種垃圾和java難學(xué)嗎 大概要學(xué)多久的一些知識(shí)點(diǎn),大家可以關(guān)注收藏,免得下次來(lái)找不到哦,下面我們開始吧!
可以用Python編程語(yǔ)言做哪些神奇好玩的事情
Python作為一種應(yīng)用極為廣泛的語(yǔ)言,幾乎在任何領(lǐng)域都能派上用場(chǎng)。想做Web有Flask/Django/Tornado;想做分布式有Celery;想做手機(jī)App有Kivy;想做數(shù)據(jù)分析有Pandas;想做可視化有Matplotlib/Seaborn/Plotly/Bokeh;想做機(jī)器學(xué)習(xí)有Tensorflow/PyTorch/MxNet……
夸張一點(diǎn)說(shuō),幾乎沒(méi)有什么做不了的東西(筆芯)。小慕今天分享兩個(gè)可以用Python做的非常好玩的事情,大家都可以試試看~一、面部識(shí)別得益于大量前人的工作,如今利用Python做一些簡(jiǎn)單的計(jì)算機(jī)視覺(jué)工作已經(jīng)變得非常非常簡(jiǎn)單了。像人臉識(shí)別、面部特征提取之類的工作,就可以直接拿來(lái)用,極少需要自己實(shí)現(xiàn)繁瑣的算法。
DLib就是一個(gè)這樣的C++庫(kù),而同時(shí)它也提供了Python接口。
想必大家都有過(guò)在辦公室遭遇boss探視的經(jīng)歷,而此時(shí)此刻你卻在毫無(wú)自知地逛著淘寶/知乎/豆瓣,場(chǎng)面一度十分尷尬……
那我們就來(lái)嘗試一下,用Python通過(guò)攝像頭探測(cè)人臉。如果有人進(jìn)入了攝像頭范圍,則讓Python提出一個(gè)通知,告訴你——趕緊把不相關(guān)的東西關(guān)掉!
整個(gè)代碼很短,無(wú)非幾十行,為了能夠使用,我們還需要安裝一些包和庫(kù)。這里需要用到的包括OpenCV和DLib。由于dlib需要boost-python,因此還需要安裝boost和boost-python。(注意:boost-python默認(rèn)情況下只編譯python2依賴的庫(kù),如果使用python3,需要加編譯開關(guān);而dlib里是沒(méi)有探測(cè)python版本的,所以可能還需要做一些小hack或者是直接改boost-python庫(kù)里的文件名)
至于代碼,可以簡(jiǎn)單地放出來(lái):
importcv2importdlibfromsubprocessimportcallfromtimeimporttimeFREQ=5FACE_DETECTOR=dlib.get_frontal_face_detector()#macOS下可以使用AppleScript發(fā)送通知defnotify(text,title):cmd=r'displaynotification"%s"withtitle"%s"'%(text,title)call(["osascript","-e",cmd])if__name__=='__main__':#初始化攝像頭cap=cv2.VideoCapture(0)#創(chuàng)建繪圖窗口#cv2.namedWindow('face')notify_time=0whileTrue:#獲取一幀ret,frame=cap.read()#不需要太精細(xì)的圖片frame=cv2.resize(frame,(320,240))#探測(cè)人臉,可能有多個(gè)faces=FACE_DETECTOR(frame,1)forfaceinfaces:#提取人臉部分畫個(gè)方框#fimg=frame[face.top():face.bottom(),face.left():face.right()]#cv2.rectangle(frame,(face.left(),face.top()),(face.right(),face.bottom()),(255,0,0),3)#不超過(guò)FREQ秒一次的發(fā)提醒iftime()-notify_time>FREQ:notify(u'檢測(cè)到人臉',u'注意')notify_time=time()#畫到窗口里#cv2.imshow('face',frame)#按Q退出ifcv2.waitKey(500)&0xff==ord('q'):break#清理窗口釋放攝像頭#cv2.destroyAllWindows()cap.release()代碼的原理很簡(jiǎn)單:通過(guò)opencv捕獲攝像頭獲取的圖像,然后交由dlib的facedetector進(jìn)行檢測(cè)。如果檢測(cè)到臉部,則通過(guò)AppleScript發(fā)出系統(tǒng)提醒(notify函數(shù)即通過(guò)process執(zhí)行AppleScript發(fā)出提醒,如果你使用的是Windows,也可以替換成別的內(nèi)容,例如Win下使用VBScript發(fā)出彈窗提醒)。
當(dāng)然,既然檢測(cè)到人臉,那就不僅僅只是能做簡(jiǎn)單提醒了。還可以做的事情包括多張照片的臉部變形合成——比如,找出你和你女朋友的照片來(lái)做個(gè)夫妻相合成什么的……
或者,提取所有的標(biāo)志性點(diǎn),給人臉合成出意外的表情或者哈哈鏡效果。
甚至可以借助其它的深度學(xué)習(xí)網(wǎng)絡(luò)進(jìn)行人臉識(shí)別。這算是超級(jí)弱化版的臉部識(shí)別,比不上FaceID但也挺好玩,不過(guò)計(jì)算量就不容樂(lè)觀了。
順便說(shuō)一句,什么人臉識(shí)別關(guān)掉不該看的東西,對(duì)小慕來(lái)說(shuō)不存在的,人家上班刷知乎可是經(jīng)過(guò)老板點(diǎn)頭的!(驕傲臉叉腰)
二、數(shù)據(jù)分析來(lái)分析下Marvel今年的最后一部戲:「雷神3:諸神的黃昏」。前一段時(shí)間滿天飛的預(yù)告片,神秘博士的客串,綠巨人的出演,看得人十分興奮!來(lái)張大圖:
大家對(duì)于這部電影的評(píng)價(jià)是怎么樣的呢?小慕爬取了2w條豆瓣影評(píng),做一個(gè)簡(jiǎn)單分析。
先來(lái)看看豆瓣的短評(píng):
這里只抓取了前2w條評(píng)論,說(shuō)一個(gè)小技巧,喜歡寫爬蟲的小伙伴們注意了:爬取的網(wǎng)頁(yè)一定要緩存到本地!這可以減少解析網(wǎng)頁(yè)時(shí)出錯(cuò),避免需要重新再爬一遍的「尷尬」!另外這能給服務(wù)器減少負(fù)載,人家網(wǎng)站管理員看你的請(qǐng)求還算守規(guī)矩,也就不會(huì)封你賬號(hào)/ip啦!
代碼大概是這樣的:
下面是緩存下來(lái)的網(wǎng)頁(yè)文件:
既然有2w多條數(shù)據(jù),怎么能直接寫sql,那會(huì)累死的……于是要來(lái)封裝一下操作數(shù)據(jù)庫(kù)的邏輯:
來(lái)看看效果,除去部分出錯(cuò)的,還剩下19672條:
具體的數(shù)據(jù)是長(zhǎng)這樣的:
另外,贊同數(shù)量排名第一卷耳君的影評(píng)實(shí)在是太有意思了:
第一部:《爸爸,再愛(ài)我一次》
第二部:《哥哥,再愛(ài)我一次》
第三部:《姐姐,再愛(ài)我一次》
ps:托爾終于從錘神變成了雷神
錘子之神這個(gè)梗小慕表示能玩一年(手動(dòng)微笑臉)。
光有數(shù)據(jù)還不足以說(shuō)明什么,深入分析一波:細(xì)心的小伙伴一定發(fā)現(xiàn)了,雷神明明是11月3號(hào)才上映,為啥10月份就有影評(píng)了?小慕猜測(cè),這肯定是漫威鐵桿粉跑國(guó)外看了,一查發(fā)現(xiàn),果然人家洛杉磯10月10號(hào)就上映了:
既然關(guān)心到日期,可以來(lái)統(tǒng)計(jì)一下周一到周日哪天去看電影的人比較多:
整體數(shù)據(jù)顯示:果然還是周末去看電影的人更多……周一數(shù)據(jù)高于二、三、四的原因,不知道是不是沒(méi)有周末的朋友調(diào)休去看的?
PS:數(shù)據(jù)庫(kù)里的日期是2017-10-25格式的:怎么快速讓他顯示成周X呢?這里只要寫個(gè)小函數(shù)就行:
從數(shù)據(jù)庫(kù)里讀數(shù)據(jù)和統(tǒng)計(jì)的方式在這:(后面的統(tǒng)計(jì)方式也都類似,就不每次都把代碼放出來(lái)啦)
說(shuō)了這么多還是沒(méi)提到電影的受歡迎程度,直接放圖:
總體上看還是推薦的人比較多耶,這應(yīng)該挺符合大家的預(yù)期,畢竟是漫威出品,光忠實(shí)粉絲就不計(jì)其數(shù)。更何況這個(gè)片子里出現(xiàn)了很多超級(jí)火爆的場(chǎng)面戲,還有各種超級(jí)英雄助陣,這樣的統(tǒng)計(jì)結(jié)果也就不足為奇了。
最后將排名前100的評(píng)論內(nèi)容做了一下分詞,做成詞云:
至于補(bǔ)充提問(wèn)中提到的這為什么適合用Python做,其實(shí)說(shuō)到底就是用Python來(lái)抓取和處理各種數(shù)據(jù)都非?!疙樖帧?。
據(jù)小慕所知,目前的數(shù)據(jù)工作中,數(shù)據(jù)科學(xué)家使用最多的工具語(yǔ)言就是Python,排在第二的工具語(yǔ)言是R語(yǔ)言。但這里有一個(gè)有趣的現(xiàn)象,那就是同時(shí)使用Python或者R語(yǔ)言的人,推薦別人使用Python的卻遠(yuǎn)高于R語(yǔ)言。Why?
答案是:1.Python簡(jiǎn)單易學(xué),極其容易上手,語(yǔ)法簡(jiǎn)單,處理速度會(huì)比R語(yǔ)言要快,而且無(wú)需把數(shù)據(jù)庫(kù)切割。
2.市場(chǎng)前景好,是目前的趨勢(shì),就業(yè)也會(huì)更容易。
3.標(biāo)準(zhǔn)庫(kù)非常龐大,特別的“功能齊全”,可以處理各種工作,其中就包含抓取和處理數(shù)據(jù)。
所以,有一種說(shuō)法是:python語(yǔ)言在工程方便比較實(shí)用,R語(yǔ)言則更受學(xué)術(shù)界歡迎。具體是否贊同這種說(shuō)法,還要看大家自己的理解咯~其實(shí)除了小慕舉例說(shuō)的這兩種有趣的事情,Python能做的還有很多,在此不一一列舉,如果感覺(jué)get到了新姿勢(shì),記得回來(lái)點(diǎn)贊啦~
程序員學(xué)習(xí)交流請(qǐng)?zhí)砑幽秸n網(wǎng)官方客服微信:mukewang666回復(fù)暗號(hào)“前端面試”可進(jìn)前端交流群回復(fù)暗號(hào)“Java”可進(jìn)Java交流群回復(fù)暗號(hào)“專欄”可進(jìn)程序員交流群Python在大部分領(lǐng)域都能勝任,為什么很多企業(yè)轉(zhuǎn)向了Golang
python是一個(gè)很靈活的語(yǔ)言,但是里面一切皆變量,帶來(lái)了很大的不確定性,如果不是高手,很容易造成生產(chǎn)級(jí)的事故。而go,首先作為編譯型需要,運(yùn)行速度遠(yuǎn)超python,同時(shí)容器的爆火也推進(jìn)了go的發(fā)展,使越來(lái)越多的公司傾向了go,而且在很多系統(tǒng)的銜接處,通過(guò)go可以提高性能,也使很多公司轉(zhuǎn)向了go。但總的來(lái)說(shuō),語(yǔ)言要看場(chǎng)景,不能一概而論。
Python和c語(yǔ)言有什么區(qū)別
區(qū)別:
1、語(yǔ)言類型不同:c++屬于靜態(tài);Python屬于動(dòng)態(tài)。
2、運(yùn)行效率不同:c++的運(yùn)行效率要比Python快。
3、學(xué)習(xí)難度不同:c++更加復(fù)雜;Python更容易上手。
4、編程執(zhí)行方式不同:c++需要經(jīng)過(guò)編譯才能運(yùn)行;Python不需要經(jīng)過(guò)編譯。
5、函數(shù)庫(kù)的使用方法不同:c++引用頭文件需要告知預(yù)處理器這個(gè)文件的內(nèi)容;Python可以使用函數(shù)直接引用。
C語(yǔ)言和Python的區(qū)別
1、語(yǔ)言類型
Python是一種基于解釋器的,面向?qū)ο蟮慕忉屝驼Z(yǔ)言。解釋器會(huì)逐行讀取代碼;首先將Python編譯為字節(jié)碼,然后由大型C程序解釋。
C是一種面向過(guò)程的編譯型語(yǔ)言,完整的源代碼將直接編譯為機(jī)器代碼,由CPU直接執(zhí)行。
2、內(nèi)存管理
Python使用自動(dòng)垃圾收集器進(jìn)行內(nèi)存管理。
在C語(yǔ)言中,程序員必須自己進(jìn)行內(nèi)存管理。
3、語(yǔ)法結(jié)構(gòu)
Python中通過(guò)縮進(jìn)來(lái)表示語(yǔ)句體,在Python中每一條語(yǔ)句結(jié)尾后沒(méi)有分號(hào)。
C語(yǔ)言通過(guò){}來(lái)表示語(yǔ)句體,在C語(yǔ)言中每一條語(yǔ)句結(jié)尾后都需要由英文分號(hào)結(jié)尾。分號(hào)是C語(yǔ)言中唯一的語(yǔ)句結(jié)束標(biāo)志。
4、速度
Python編程語(yǔ)言很慢;而,C語(yǔ)言很快。
5、應(yīng)用
Python是一種通用編程語(yǔ)言,一個(gè)多范式。它主要支持面向?qū)ο缶幊蹋绦蚓幊蹋瘮?shù)編程。
C是結(jié)構(gòu)化編程語(yǔ)言。允許使用函數(shù),選擇(if/else等),迭代(循環(huán))。它最主要的用途就是系統(tǒng)底層的應(yīng)用,例:硬件相關(guān)的應(yīng)用程序。
為什么感覺(jué)鋪天蓋地都是Python的廣告
很高興收到你的邀請(qǐng)
Python的火爆程度,本人覺(jué)得主要跟下面幾點(diǎn)有關(guān)系:
一是Python確實(shí)是順應(yīng)了信息技術(shù)發(fā)展的潮流,在當(dāng)前5G、人工智能、大數(shù)據(jù)等領(lǐng)域,都能輕易應(yīng)對(duì)。
二是它是一個(gè)開源的開發(fā)軟件,在當(dāng)前技術(shù)被政治化的脅迫下,越來(lái)越多的人認(rèn)識(shí)到有版權(quán)的軟件的不可靠性,更依賴于掌握一門開源的開發(fā)軟件。
三是多人想學(xué)習(xí)Python,所以就有很多培訓(xùn)Python的專業(yè)公司或個(gè)人,所以,網(wǎng)上大把的Python學(xué)習(xí)廣告,一是攬客,二是反映了培訓(xùn)競(jìng)爭(zhēng)的激烈,三是說(shuō)明Python是今后最主要的開發(fā)語(yǔ)言。
無(wú)論如何,能掌握多一門開發(fā)語(yǔ)言,對(duì)于從事信息技術(shù)的人來(lái)說(shuō),都是一個(gè)很不錯(cuò)的選擇。
c語(yǔ)言、c++ 、c# 、java python,有什么區(qū)別
cc++c#javapython只是不同的計(jì)算機(jī)編程語(yǔ)言,就像中文英語(yǔ)日語(yǔ)德語(yǔ)意大利語(yǔ)一樣。但他們有顯著的不同。
c語(yǔ)言是面向過(guò)程和函數(shù)的編程語(yǔ)言c語(yǔ)言是一門古老的語(yǔ)言,主要是面向過(guò)程編程,也實(shí)現(xiàn)了函數(shù)式編程。與另外幾個(gè)語(yǔ)言相比,顯著的優(yōu)點(diǎn)就是速度快。
c++是c的超集c++完全兼容c,是面向過(guò)程、面向?qū)ο?、函?shù)式編程以及模板語(yǔ)言等。速度相對(duì)c慢點(diǎn)。
c#和java是面向?qū)ο蟮恼Z(yǔ)言與c和c++相比,c#和java是完全面向?qū)ο蟮恼Z(yǔ)言。而且具有內(nèi)存管理功能。
python是腳本語(yǔ)言python是腳本語(yǔ)言,執(zhí)行期間動(dòng)態(tài)編譯。其他語(yǔ)言都是編譯型語(yǔ)言,語(yǔ)言先編譯再執(zhí)行。因此,python具有較好的交互性。
文章到此結(jié)束,如果本次分享的堅(jiān)決不用python這種垃圾和java難學(xué)嗎 大概要學(xué)多久的問(wèn)題解決了您的問(wèn)題,那么我們由衷的感到高興!
本文鏈接:http:///su/473.html