不管你是待業(yè)還是失業(yè),在這個被互聯網圍繞的時代里,選擇python前端,就多了一項技能,還怕找不到工作?,還怕不好找工作?小編就來告訴你這個專業(yè)的優(yōu)勢到底體現在哪里:Python 竟然也可以寫網頁前端了!,如何用純 Python 寫交互式 Web 應用???。
Python作為膠水語言,真的是無所不能。這不,最近又出現一個基于 Python3,目標是替代 的前端開發(fā)工具 —Brython好用嗎?咱今天來試試用它寫一個計算器:不過,我們首先要知道它作為 Python 的客戶端 Web 編程工具,和 JS 有什么區(qū)別呢?1. 特點1. 可輕易地在頁面中內嵌 Python 終端進行測試2. 運行速度接近于 CPyhon3. 寫法方便,社區(qū)強大,可進行敏捷開發(fā)如果 Python 和 JS 你都寫過,那大概率會覺得相同的功能,用 Python 寫起來比 JS 更方便。4.和 JS 一樣,你不用安裝任何東西就可以開始編寫下面就用Brython做一些簡單的實驗吧。2. 實驗0. 安裝與通常的 Python 庫一樣,可以通過 pip install brython 進行安裝。然后在一個空目錄下執(zhí)行:python -m brython --install1. 在頁面上顯示 Hello !:<!doctype html> <html> <head> <meta charset="utf-8"> <script type="text/" src=" </script> </head> <body onload="brython()"> <script type="text/python"> from browser import document document <= "Hello !" </script> </body> </html>將這份代碼保存為index.html,雙擊在瀏覽器中打開,即可看到Hello !字樣:原理:代碼的 head 中,引入了一個 Brython 引擎附帶的 brython.min.js 模塊,用于使用 Python 控制頁面。而在 <script type="text/python"> 和 </script> 之間就是相應的 Python 代碼??梢钥吹剑朐?document 中顯示文本,只需要直接輸入:document <= "你所需要顯示的文本"后續(xù)你將會看到用 Brython 使用標準化的 DOM 語法和頁面交互的例子。2. 用 HTML 標簽來做文本格式化:如果要加粗文本:from browser import document, html document <= html.B("Hello !")部分加粗、部分不加粗:from browser import document, html document <= html.B("Hello, ") + "world !"i 標簽:document <= html.UL(html.LI(i) for i in range(5))超鏈接:document <= html.A("Python實用寶典", href=" html> <html> <head> <meta charset="utf-8"> <script type="text/" src=" </script> </head> <body onload="brython()"> <script type="text/python"> from browser import document, html document <= html.B("Hello !") document <= html.UL(html.LI(i) for i in range(5)) document <= html.A("Python實用寶典", href=" </script> </body> </html>效果:3. 寫一個簡單的計算器先寫好簡單的圖形架構,用th和tr標簽即可:from browser import document, html calc = html.TABLE() calc <= html.TR(html.TH(html.DIV("0", id="result"), colspan=3) + html.TH("C", id="clear")) lines = ["789/", "456*", "123-", "0.=+"] calc <= (html.TR(html.TD(x) for x in line) for line in lines) document <= calc然后加上一些 CSS 樣式就可以把這個簡單的圖形架構變漂亮了<style> *{ font-family: sans-serif; font-weight: normal; font-size: 1.1em; } td{ -color: #ccc; padding: 10px 30px 10px 30px; border-radius: 0.2em; text-align: center; cursor: default; } #result{ border-color: #000; border-width: 1px; border-style: solid; padding: 10px 30px 10px 30px; text-align: right; } </style>*只需要做運算符的事件觸發(fā)器即可,從下面這行代碼:calc <= (html.TR(html.TD(x) for x in line) for line in lines)可以看出,所有的按鈕都被創(chuàng)建為 td 標簽,因此我們要獲得所有這些按鈕是否被點擊,僅需要:for button in document.select("td"): button.bind("click", action)意思是,按鈕被點擊后便執(zhí)行 action 操作,action 操作定義如下:def action(event): """Handles the "click" event on a button of the .""" # The element the user clicked on is the attribute "target" of the # event object element = event.target # The text printed on the button is the element's "text" attribute value = element.text if value not in "=C": # update the result zone if result.text in ["0", "error"]: result.text = value else: result.text = result.text + value elif value == "C": # reset result.text = "0" elif value == "=": # execute the formula in result zone try: result.text = eval(result.text) except: result.text = "error"如果不是 = 號或 C 號,則進行 字符串拼接。如果是 C 號,則清空 result。如果是 = 號,則需要計算出結果,直接對字符串用 eval() 函數 即可完成目的。這邊是全部核心代碼了,寫起來真的極其方便。你可以訪問如下地址體驗這個 Python 寫的計算器: 提取碼:v36f作者:Ckend 來源:Python實用寶典
不用學前端編程,你就能用 Python 簡單高效寫出漂亮的交互式 Web 應用,將你的數據分析成果立即展示給團隊和客戶。痛點從我開始折騰數據分析工具的那一天,就沒有想明白一件事兒 —— 我打算把數據分析的成果做成一個 Web 應用,為什么這么難?我需要的核心功能,無非是在網頁上接收用戶輸入,然后做分析處理,把分析結果反饋給用戶,完事兒??墒沁@談何容易?很多人都會微笑著告訴你,想做 Web 應用?這得學前端編程, HTML + 了解一下吧!什么?你還需要在后臺做數據分析?那你就得學 Web 框架了。你說喜歡 Python ?那就學個 Django 或者 Flask 好了。我也不是沒有看過 Django 和 Flask 的教程,還曾經付費學習過。光是 Django 配置環(huán)境,就夠寫一章出來。作為學習的中間成果,我還寫了這篇《如何用 Python 做 Web 開發(fā)?——Django 環(huán)境配置》分享給你。真正讓我痛苦的,不是 Web 框架的操作有多么瑣碎,而是教程里的案例,為什么都那么奇怪?幾乎所有的教程,都指向一個目標: 來,我教你做一個 blog 出來! 我用你教?!我要是想用 blog ,可以直接注冊一個免費的?。槭裁次乙约洪_發(fā)個 blog 出來?為什么你就不能告訴我,該怎么把我目前的數據分析結果,迅速挪到 Web 頁面上,跟用戶實時交互?雖然二者的結果,都是做一個 Web 應用出來。但是,它們關注的焦點,需要的功能,能一樣嗎?但是人家寫書和做教程的人,就是不疾不徐,堅持一定要教會你,如何做一個 blog 出來……你不學,又能怎么辦呢?你難道想只憑 Python 腳本,就做一個 Web 應用出來?還真別說,最近,這個事兒從幻想,變成了現實。樣例這不,我就用純 Python 腳本寫了個 Web 應用。我編寫的代碼里,沒有一絲半毫的 Web 框架,,甚至是 HTML 。這玩意兒能用嗎?你自己來試試看。請你打開瀏覽器,輸入以下鏈接: Python 和循環(huán)神經網絡預測嚴重交通擁堵?》,應該對這個數據集很熟悉。只不過,當時我們更注重的,是用循環(huán)神經網絡搭建了一個嚴重擁堵事件預測模型。而今天,我們是要進行探索性數據分析,也就是根據我們感興趣的目標,對數據進行整理操作,然后可視化顯示。選定之后,你會看到右側提示兩個信息:你篩選之后,數據框包含行數;在層疊地圖上的可視化結果。怎么樣?麻雀雖小,五臟俱全。雖然咱們這個 Web 應用很簡單,不過交互分析該有的功能和流程,基本上都涵蓋了。你可能會問: 王老師,編這么一個應用出來,不簡單吧? 讓我?guī)愕侥缓?,看看是不是很復雜。幕后我把這個應用的全部源代碼,都為你存儲到了 Github 上。請你訪問這個網址獲取??梢钥吹?,一共包含了 4 個文件。有意思的是,其中 3 個,包括:..txt都只是部署到遠程服務器時,需要用到的配置文件而已。也就是說,只有*一個 .py 是主角,它包含了實現咱們全部交互式數據分析功能的 Python 腳本文件。這代碼,少說也得有幾百行吧?別擔心,打開來看看:上面這張截圖,就已經包含了實現交互數據分析功能的全部代碼。神奇吧?解讀這么短的代碼,為什么能有如此強大的功能?這是因為它背后使用的一個軟件包,叫做 streamlit 。它是干什么用的?一言以蔽之,給你賦能,讓你能夠不去操心什么前端后端。只寫 Python ,只關注功能,你就能寫出一個交互式 Web 應用出來。當然,既然*是 Web 應用,那么實際上前后端的功能都是齊備的。只不過,這些交由 Streamlit 來幫你費心操辦。你根本不用管。爆發(fā)為什么會有人做了這么一款神器出來?原因很簡單,咱們前面提到的痛點,是大伙兒都有的。咱們這些麻瓜(Muggle),遇到痛點只能忍著。但是真正的魔法師(優(yōu)秀程序員),是忍不了的。在這段來自 PyData LA 2021 的視頻里,Streamlit 的 CEO Adrien Treuille 談及了他在數據智能企業(yè)中,長期遭遇的痛點。*的痛點,就是數據科學家訓練好機器學習模型后,需要驗證效果,和用戶反饋溝通。但是,做機器學習的工程師本身,并不掌握這一整套的工具棧。所以,就得在把全部的數據分析和模型訓練工作完成后,把這東西移交給一個工具制作團隊。人家做完以后,就告訴數據科學團隊說,做好了。但是注意,現在處于需求凍結階段。這個應用你們可以隨便用,只是別亂改。改壞了我們管不了。因為最近兩個月,我們還得給其他若干數據分析團隊做 app 。大概幾個月以后,我們又能回來幫助你們了……Adrien Treuille 很敏銳地捕捉到了這個長期痛點,于是在 2021 年, 創(chuàng)立了 streamlit 。目標很簡單,給數據科學團隊提供簡單的工具,讓他們使用已經掌握的 Python 編程技能,就能直接做 Web 應用。什么 “等上兩三個月不許改”?!你們自己慢慢兒玩兒去吧,我們想怎么改,就怎么改!至于做出來的東西嘛,可以是這樣的:資源看到這里,是不是心動了?也打算學習一下 Streamlit ?沒問題,我前面給你提供的樣例,就在 github 上,你可以直接查看源碼。注意因為數據比較大,有接近 300 MB,github 免費空間放不下,所以我為你存到了云盤上,請從這個鏈接下載,提取碼為 ddpp 。如果你希望重現這個小應用,并且一步步學習掌握 Streamlit 的基礎知識和技能,我也已經為你寫好了一份手把手的教程。地址在這里。它不僅教你如何設置環(huán)境,安裝工具,寫作代碼,甚至連如何免費部署到 heroku 平臺,讓用戶使用,都毫無保留地教給了你。那篇文章,我用于參加少數派年度征文活動,所以就不能全文展示在這里了。讀完以后,如果你覺得有收獲,歡迎在少數派平臺上幫我點個贊。謝謝支持!思考嘗試過之后,你應該不難發(fā)現,Streamlit 給你帶來了什么。如果你學過 和 Flask, Django 等 Web 應用開發(fā)技術,Streamlit 可以加快你的 Web 應用開發(fā)與測試進程。如果你還沒有學過上述技術, Streamlit 可以給你賦能,讓你一下子有了把數據分析結果變成產品的能力。給你講點兒更激進的。有人已經希望能用它替代掉 Flask 用于產品發(fā)布了。還有人說,將來寫技術文檔,也應該充分使用 Streamlit 。甚至,還把它比作了數據科學界的 iPhone 。這里,它是借喻 iPhone 開啟智能手機時代,說明 Streamlit 的劃時代性。我不希望你也變得如此激進。因為這里提到的每一種功用,現在還都有非常專業(yè)的工具做的更好,而且新的工具也在不斷涌現。例如說,我們在多個教程中一直使用 Jupyter Notebook ?,F在憑借 Voila 擴展的加持,你也可以很輕松地把 Jupyter Notebook 變成 Web app ,而且可以免費運行在 mybinder 上面。但是,你可以看到,一個新的工具,以一種簡單,而不是更繁復的辦法,解決一個功能痛點,是一件多么令人欣喜的事兒??戳诉@篇文章,可能會給你一種誤解,似乎 為代表的前端編程技術,再也不需要學了。其實不是這樣的。可以想象,開發(fā)門檻降低以后,將來會有更多的人使用 Python 來做 Web 應用。用 Streamlit 這樣的方法,他們只是開發(fā)出了一個原型。要是想打造精品,就必須精細調控很多細節(jié)。這時候, 如果你精通 ,那你潛在的合作對象一下子就多了起來,你掌握的這門技術,也就有了更大的價值。還記得嗎?我不止一次給你強調過,比起一個工具自身的能力來,協作網絡更重要。忘了的話,記得復習《學 Python ,能提升你的競爭力嗎?》。這就好像印刷術的發(fā)明,不是讓會寫字這件事兒變得失去價值,而是全社會都增大了對好作品的渴求。深刻的思考,加上有效的文字表達,會讓你生存得更好。當然,如果你不希望精通寫作技藝,只是想做一個抄書匠糊口。那么印刷術就可能會替代你的工作,結果就不那么美妙了。小結這篇文章,我為你介紹了 Streamlit 這款有趣的工具。希望你讀過之后,掌握了以下知識點:借助 Streamlit ,你可以用純 Python 編制 Web 應用;學 Web 設計依然很有前途,因為你的潛在合作群體正在迅速擴大;不要惹魔法師(優(yōu)秀程序員)。他們的痛點需求會轉化成無盡的戰(zhàn)斗力,興許會直接替掉你的日常工作。喜歡別忘了點贊,并及時寫下你的感受與評論。也歡迎你轉發(fā)給親朋好友,讓他們也加入咱們的討論中來。別忘了關注我的專欄 “玉樹芝蘭”,以免錯過更多的更新推送。延伸閱讀你可能也會對以下話題感興趣。點擊鏈接就可以查看。如何高效學 Python ?如何用 iPad 運行 Python 代碼?論文讀不懂怎么辦?如何不寫 SQL ,探索和分析數據庫?題圖:Photo by Luke Chesser on Unsplash
就拿大數據說話,優(yōu)勢一目了然,從事IT行業(yè),打開IT行業(yè)的新大門,找到適合自己的培訓機構,進行專業(yè)和系統(tǒng)的學習。
只要一個電話
我們免費為您回電