python段子
㈠ python的創造者是誰
Guido van Rossum,Python之父,就是他用一部英國喜劇《蒙提·派森的飛行馬戲團》(Monty Python and the Flying Circus)命名了這門語言。1989年,他在荷蘭創造了Python(果然名字里有Van的都是荷蘭人嗎);
1991年初,Python發布了第一個公開發行版;爾後,被無數程序員所使用。
在Python社區,他被人稱作「仁慈的獨裁者」(Benevolent Dictator For Life),在線學習據說這一名字也是取自那部電視劇。
傳說Guido當年去Google面試,簡歷上只寫了一句話:I wrote Python。結果HR沒能理解,直到面試到第10輪才反應過來這個人是python的作者,而不是只是「寫過」python程序。
這個事情的真實性含量極低,Guido去google工作的時候已經是名聲在外的業界大牛了,更太不可能要經過10輪面試。去google搜索了一下"i wrote python",發現都是國內網站上的消息。估計這多半是國內某大V在社交媒體上一時興起寫出的段子吧。
㈡ python是什麼樣的編程語言
由於近幾年人工智慧的不斷發展,Python也跟著火了,因為Python是深度學習技術的主流應用編程語言。同時它的應用場景很多,被稱為「膠水語言」。優妹兒就幫小夥伴們科普一下,Python這門神奇編程語言的發展趨勢,以及語言特性,幫助想要學習Python的小夥伴們,更清晰的了解它。
Python第一個公開發行版發行於1991年,所以這年被當作Python的誕生年。Python源代碼遵循GPL協議(通用公共許可證),這是一個開源的協議,也就是說你可以免費使用和傳播它,而不用擔心版權的問題。
Python是一種跨平台的計算機程序設計語言, 是一個高層次的結合了解釋性、編譯性、互動性和面向對象的腳本語言。最初被設計用於編寫自動化腳本(shell),隨著版本的不斷更新和語言新功能的添加,Python越來越多被用於獨立的、大型項目的開發。
Python的發展趨勢
上圖是2020年9月的Tiobe編程社區指數(它是編程語言流行度的指標),全球編程語言熱度排行榜。如果感覺上圖的排行不夠直觀,可以看下面這張柱狀圖↓
從中我們能看出Python已經超越C++和C#,強勢位列第三,當之無愧的解釋型語言領頭羊。
解釋型語言是指在運行程序的時候才翻譯代碼,專門有一個解釋器去進行翻譯,每個語句都是執行的時候才翻譯。解釋型語言缺點是運行速度會比較低,依賴解釋器,優點是跨平台性好。
而時至今日,計算機的硬體性能已經得到數量級的提高,計算能力不再是限制編程語言的最重要的因素,敏捷開發成為生產環境下對語言選擇的重要因素,Python很好的滿足了這一點,從而得到快速發展。
Python語言的特性
1、簡單易學、明確優雅、開發速度快
簡單易學:與C和Java比,Python的學習成本和難度曲線低了很多,更適合新手入門,是自底向上的技術攀爬路線。先訂個小目標爬個小山,然後再往更高的山峰前進。而不像C和JAVA光語言學習本身,對於很多初學者來說就像珠穆朗瑪峰一樣高不可攀。
明確優雅:Python的語法非常簡潔,代碼量少,非常容易編寫,代碼的測試、重構、維護等都非常容易。一個小小的腳本,用C可能需要1000行代碼、用JAVA可能要幾百行,但是用Python往往只需要幾十行就能實現!
開發速度快:當前互聯網企業的生命線是什麼?產品開發速度!如果你的開發速度不夠快,在你的產品推出之前別人家的產品已經上線了,你也就沒有生存空間了,這里的真實例子數不勝數。那麼,Python的開發速度說第二沒人敢稱第一!(不歡迎辯論^_^)
2、 跨平台、可移植、可擴展、解釋型、面向對象的動態語言
跨平台:Python全面支持Windows、Linux和MAC os等主流操作系統。
跨平台是指:使用不同的操作系統開發程序、運行程序,不用修改代碼。
可移植:代碼通常不需要多少改動就能移植到別的平台上使用。
可擴展:Python語言本身由C語言編寫而成的,你完全可以在Python中嵌入C,從而提高代碼的運行速度和效率。你也可以使用C語言重寫Python的任何模塊,從根本上改寫Python。
解釋型:Python語言在執行過程中由解釋器逐行分析,逐行運行並輸出結果。
面向對象:Python語言具備所有的面向對象特性和功能,支持基於類的程序開發。
動態語言:在運行時可以改變其結構。例如新的函數、對象、甚至代碼可以被引進,已有的函數可以被刪除或是其他結構上的變化。動態語言非常具有活力。
3. 「內置電池」,大量的標准庫和第三方庫
Python為我們提供了非常完善的基礎庫,覆蓋了系統、網路、文件、GUI、資料庫、文本處理等方方面面,這些是隨同解釋器被默認安裝的,各平台通用,你無需安裝第三方支持就可以完成大多數工作,這一特點被形象地稱作「內置電池(batteries included)」。
4. 社區活躍,貢獻者多,互幫互助
技術社區的存在就相當於程序員手中的指南針,沒有指南針,很多時候,碰到了問題,就像無頭的蒼蠅只能到處亂飛,最終在茫茫的海洋中轉暈致死。技術社區可以給我們對語言的學習和使用提供巨大的幫助,無論是前期的學習,還是日後的工作,只要有問題,技術社區的大牛都可以幫我們解決,有這些助力,可以幫我們更好地了解、學習和使用一門語言。技術社區同時還推動Python語言的發展方向,功能需求,促使公司企業更多的使用Python語言,招聘Python程序員。
5. 開源語言,發展動力巨大
Python是基於C語言編寫的,並且使用GPL開源協議,你可以免費獲取它的源代碼,進行學習、研究甚至改進。眾人拾柴火焰高,有更多的人參與Python的開發,促使它更好的發展,被更多的應用,形成良性循環。Python為什麼會越來越火就是因為它的開放性,自由性,聚起了人氣,形成了社區,有很多人在其中做貢獻,用的人越來越多,自然就提高了市場佔有率,企業、公司、廠家就不得不使用Python,提供的Python程序員崗位就越來越多,這就是開源的力量。
㈢ Python的類和對象入門
本文來說說Python中的類與對象,Python這門語言是無處不對象,如果你曾淺要了解過Python,你應該聽過Python是一種面向對象編程的語言,所以你經常可能會看到面向「對象」編程這類段子,而面向對象編程的語言都會有三大特徵:封裝、繼承、多態。
我們平時接觸到的很多函數、方法的操作都具有這些性質,我們只是會用,但還沒有去深入了解它的本質,下面就介紹一下關於類和對象的相關知識。
封裝這個概念應該並不陌生,比如我們把一些數據封裝成一個列表,這就屬於數據封裝,我們也可以將一些代碼語句封裝成一個函數方便調用,這就是代碼的封裝,我們也可以將數據和代碼封裝在一起。用術語表示的話,就是可以將屬性和方法進行封裝,從而得到對象。
首先我們可以定義一個類,這個類中有屬性和方法,但有的夥伴會比較好奇,屬性和方法不是會封裝成對象嘛,為什麼又變成類了?舉個例子,類就好比是一個毛坯房,而對象是在毛坯房的基礎上改造成的精裝房。
在類定義完成時就創建了一個類對象,它是對類定義創建的命名空間進行了一個包裝。類對象支持兩種操作:屬性引用和實例化。
屬性引用的語法就是一般的標准語法:obj.name。比如XiaoMing.height和XiaoMing.run就是屬性引用,前者會返回一條數據,而後者會返回一個方法對象。
這里也支持對類屬性進行賦值操作,比如為類中的weight屬性賦予一個新值。
而類的實例化可以將類對象看作成一個無參函數的賦值給一個局部變數,如下:
ming就是由類對象實例化後創建的一個實例對象,通過實例對象也可以調用類中的屬性和方法。
類在實例化過程中並不都是像上面例子一樣簡單的,一般類都會傾向將實例對象創建為有初始狀態的,所以在類中可能會定義一個__init__的魔法方法,這個方法就可以幫助接收、傳入參數。
而一個類如果定義了__init__方法,那麼在類對象實例化的過程中就會自動為新創建的實例化對象調用__init__方法,請看下面這個例子。
可以看到在__init__()中傳入了參數x和y,然後在print_coor中需要接收參數x和y,接下來通過實例化這個類對象,驗證一下參數是否能通過__init__()傳遞到類的實例化操作中。
所謂繼承就是一個新類在另一個類的基礎上構建而成,這個新類被稱作子類或者派生類,而另一個類被稱作父類、基類或者超類,而子類會繼承父類中已有的一些屬性和方法。
比如上面這個例子,我並沒有將list_定義成一個列表,但它卻能調用append方法。原因是類Mylist繼承於list這個基類,而list_又是Mylist的一個實例化對象,所以list_也會擁有父類list擁有的方法。當然可以通過自定義類的形式實現兩個類之間的繼承關系,我們定義Parent和Child兩個類,Child中沒有任何屬性和方法,只是繼承於父類Parent。
當子類中定義了與父類中同名的方法或者屬性,則會自動覆蓋父類對應的方法或屬性,還是用上面這個例子實現一下,方便理解。
可以看到子類Child中多了一個和父類Parent同名的方法,再實例化子類並調用這個方法時,最後調用的是子類中的方法。Python中繼承也允許多重繼承,也就是說一個子類可以繼承多個父類中的屬性和方法,但是這類操作會導致代碼混亂,所以大多數情況下不推薦使用,這里就不過多介紹了。
多態比較簡單,比如定義兩個類,這兩個類沒有任何關系,只是兩個類中有同名的方法,而當兩個類的實例對象分別調用這個方法時,不同類的實例對象調用的方法也是不同的。
上面這兩個類中都有introce方法,我們可以實例化一下兩個類,利用實例對象調用這個方法實現一下多態。
判斷一個類是否是另一個類的子類,如果是則返回True,反之則返回False。
需要注意的有兩點:
判斷一個對象是否為一個類的實例對象,如果是則返回True,反之則返回False。
需要注意的有兩點:
判斷一個實例對象中是否包含一個屬性,如果是則返回True,反之則返回False。
需要注意的是第二個參數name必須為字元串形式傳入,如果不是則會返回False。
㈣ 如何讓你的微信自動回復笑話給朋友
您好!很高興能為您解答, 最近在網上轉悠, 無意中發現一個python庫:itchat, 這個庫能用來幹嘛呢, 用這個庫可以實現很多有趣的功能如: 微信群發、檢測好友是否被你拉黑、讓你的微信實現自動回復等。 原理大概是封裝了微信網頁版的http請求。 想起前幾天寫的爬取糗事網路的爬蟲, 覺得兩者可以合在一起, 把自己的微信做成一個可以自動回復段子的簡單機器人。
其實實現很簡單, 三十多行代碼就可實現, 以下是實現步驟:
第一步: 安裝itchat。 安裝方法有很多中, 我選擇的pip安裝:
$ pip install itchat
第二步: 把前幾天用爬蟲爬取的段子內容load到一個列表中。我的保存段子的文件是這樣的:
通過python的split等字元串函數把author fun等信息去掉, 只把content保存到列表中, 代碼實現很簡單:
第三步, 做一個隨機返回一個段子的介面:
第四步, 注冊處理微信文字回復的函數, 所有朋友發來的信息都會由下面的text_reply函數處理:
第五步, 實現關鍵字回復, 如你朋友發了帶"笑話"關鍵字的內容, 則隨機回復一條段子:
第六步, 實現main函數: 初始化段子列表、實現微信登錄、微信事件檢測:
以上步驟做完後, 運行funRobots.py, 會彈出一個二維碼, 用你的微信掃描二維碼, 然後當朋友給你的微信發帶「笑話」關鍵字的信息後你的微信就會自動回復對方你個段子。 是不是很有趣呢。
以下是做完以上操作後我給自己的微信發信息後,微信自動回復的結果:
是不是很有趣呢, 前段時間學的爬蟲終於派上用場了。python是不是很強大有趣呢。
最後貼上完整源碼:
以上只是個小例子,掌握了原理用其它語言實現也是可以的。在這里拋磚引玉,大家可以配合爬蟲隨意拓展出更多的功能