① Python 如何寫腳本
以Python2.7操作為例:
1、首先需要打開電腦桌面,按開始的快捷鍵,點擊Python2.7如圖所示的選項進入。
② 怎麼把文件名以參數的方式傳入python腳本
作為一名從小就看籃球的球迷,會經常逛虎撲籃球及濕乎乎等論壇,在論壇裡面會存在很多精美圖片,包括NBA球隊、CBA明星、花邊新聞、球鞋美女等等,如果一張張右鍵另存為的話真是手都點疼了。作為程序員還是寫個程序來進行吧!
所以我通過Python+Selenium+正則表達式+urllib2進行海量圖片爬取。
運行效果:
http://photo.hupu.com/nba/tag/馬刺
http://photo.hupu.com/nba/tag/陳露
源代碼:
# -*- coding: utf-8 -*-
"""
Crawling pictures by selenium and urllib
url: 虎撲 馬刺 http://photo.hupu.com/nba/tag/%E9%A9%AC%E5%88%BA
url: 虎撲 陳露 http://photo.hupu.com/nba/tag/%E9%99%88%E9%9C%B2
Created on 2015-10-24
@author: Eastmount CSDN
"""
import time
import re
import os
import sys
import urllib
import shutil
import datetime
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import selenium.webdriver.support.ui as ui
from selenium.webdriver.common.action_chains import ActionChains
#Open PhantomJS
driver = webdriver.PhantomJS(executable_path="G:phantomjs-1.9.1-windowsphantomjs.exe")
#driver = webdriver.Firefox()
wait = ui.WebDriverWait(driver,10)
#Download one Picture By urllib
def loadPicture(pic_url, pic_path):
pic_name = os.path.basename(pic_url) #刪除路徑獲取圖片名字
pic_name = pic_name.replace('*','') #去除'*' 防止錯誤 invalid mode ('wb') or filename
urllib.urlretrieve(pic_url, pic_path + pic_name)
#爬取具體的圖片及下一張
def getScript(elem_url, path, nums):
try:
#由於鏈接 http://photo.hupu.com/nba/p29556-1.html
#只需拼接 http://..../p29556-數字.html 省略了自動點擊"下一張"操作
count = 1
t = elem_url.find(r'.html')
while (count <= nums):
html_url = elem_url[:t] + '-' + str(count) + '.html'
#print html_url
'''
driver_pic.get(html_url)
elem = driver_pic.find_element_by_xpath("//div[@class='pic_bg']/div/img")
url = elem.get_attribute("src")
'''
#採用正則表達式獲取第3個<div></div> 再獲取圖片URL進行下載
content = urllib.urlopen(html_url).read()
start = content.find(r'<div class="flTab">')
end = content.find(r'<div class="comMark" style>')
content = content[start:end]
div_pat = r'<div.*?>(.*?)</div>'
div_m = re.findall(div_pat, content, re.S|re.M)
#print div_m[2]
link_list = re.findall(r"(?<=href=").+?(?=")|(?<=href=').+?(?=')", div_m[2])
#print link_list
url = link_list[0] #僅僅一條url鏈接
loadPicture(url, path)
count = count + 1
except Exception,e:
print 'Error:',e
finally:
print 'Download ' + str(count) + ' pictures
'
#爬取主頁圖片集的URL和主題
def getTitle(url):
try:
#爬取URL和標題
count = 0
print 'Function getTitle(key,url)'
driver.get(url)
wait.until(lambda driver: driver.find_element_by_xpath("//div[@class='piclist3']"))
print 'Title: ' + driver.title + '
'
#縮略圖片url(此處無用) 圖片數量 標題(文件名) 注意順序
elem_url = driver.find_elements_by_xpath("//a[@class='ku']/img")
elem_num = driver.find_elements_by_xpath("//div[@class='piclist3']/table/tbody/tr/td/dl/dd[1]")
elem_title = driver.find_elements_by_xpath("//div[@class='piclist3']/table/tbody/tr/td/dl/dt/a")
for url in elem_url:
pic_url = url.get_attribute("src")
html_url = elem_title[count].get_attribute("href")
print elem_title[count].text
print html_url
print pic_url
print elem_num[count].text
#創建圖片文件夾
path = "E:\Picture_HP\" + elem_title[count].text + "\"
m = re.findall(r'(w*[0-9]+)w*', elem_num[count].text) #<a href="http://www.aspku.com/tech/jiaoben/%3Ca%20href=" tech="" jiaoben="" python="" 270537.html"="" style="background: none; border: none; padding: 0px; margin: 0px; text-decoration: none; font-family: Tahoma, Geneva, sans-serif; color: rgb(59, 89, 152);">python/95398.html">爬蟲圖片張數
nums = int(m[0])
count = count + 1
if os.path.isfile(path): #Delete file
os.remove(path)
elif os.path.isdir(path): #Delete dir
shutil.rmtree(path, True)
os.makedirs(path) #create the file directory
getScript(html_url, path, nums) #visit pages
except Exception,e:
print 'Error:',e
finally:
print 'Find ' + str(count) + ' pages with key
'
#Enter Function
def main():
#Create Folder
basePathDirectory = "E:\Picture_HP"
if not os.path.exists(basePathDirectory):
os.makedirs(basePathDirectory)
#Input the Key for search str=>unicode=>utf-8
key = raw_input("Please input a key: ").decode(sys.stdin.encoding)
print 'The key is : ' + key
#Set URL List Sum:1-2 Pages
print 'Ready to start the Download!!!
'
starttime = datetime.datetime.now()
num=1
while num<=1:
#url = 'http://photo.hupu.com/nba/tag/%E9%99%88%E9%9C%B2?p=2&o=1'
url = 'http://photo.hupu.com/nba/tag/%E9%A9%AC%E5%88%BA'
print '第'+str(num)+'頁','url:'+url
#Determine whether the title contains key
getTitle(url)
time.sleep(2)
num = num + 1
else:
print 'Download Over!!!'
#get the runtime
endtime = datetime.datetime.now()
print 'The Running time : ',(endtime - starttime).seconds
main()
③ python如何用pymysql收集網站新聞
pymysql是用於操作資料庫的。你說的這個領域屬於爬蟲,爬蟲應該用requests,bs4,selenium等庫。
④ Python具體指什麼,可以運用在哪些方面呢
你好,主要運用在這些方面:
一、人工智慧,包括數據分析、計算機視覺、自然語言處理等等
現在python已經基本成了人工智慧的標准語言了,一般都是C/C++寫個底層運算庫,然後用python做腳本。各種框架層出不窮,tensorflow/pytorch等等。
二、web開發
python光是web開發的框架至少得有幾十個吧,而且用的人都很多,從後端到前端各種配套服務都非常齊全。
三、爬蟲
我估計很多人學爬蟲就是從python入手的
四、各類App的內置腳本
有很多程序裡面的內置腳本就是python,比如sublime text、blender3d,所以從這個角度來看啊,python能乾的事情就無限多了,文本編輯、3d建模、股票投資等等,只有你想不到的,沒有做不到的。
至於python能否開發qq、瀏覽器這種應用軟體?
只用python是不太行的,因為python是解釋性的,如何打包成二進制文件其實挺麻煩的,而且速度肯定比不上c++什麼的,但是作為腳本還是不錯的。
⑤ 使用python需要安裝哪些軟體
《Python 3.9.7軟體》網路網盤資源免費下載:
鏈接: https://pan..com/s/1BY60FGfwL3exK7xOooF_nw
Python 3.9.7最新正式版是一種面向對象、直譯式計算機程序設計語言,也是一種功能強大而完善的通用型語言,已經具有十多年的發展歷史,成熟且穩定。python具有非常簡捷而清晰的語法特點,且幾乎可以在所有的操作系統中運行,非常適合完成各種高層任務,隨著不斷的更新優化,逐漸被用於獨立的、大型項目的開發,只為給用戶更加完美的操作體驗。
⑥ 如何用Python做爬蟲
1)首先你要明白爬蟲怎樣工作。
想像你是一隻蜘蛛,現在你被放到了互聯「網」上。那麼,你需要把所有的網頁都看一遍。怎麼辦呢?沒問題呀,你就隨便從某個地方開始,比如說人民日報的首頁,這個叫initial pages,用$表示吧。
在人民日報的首頁,你看到那個頁面引向的各種鏈接。於是你很開心地從爬到了「國內新聞」那個頁面。太好了,這樣你就已經爬完了倆頁面(首頁和國內新聞)!暫且不用管爬下來的頁面怎麼處理的,你就想像你把這個頁面完完整整抄成了個html放到了你身上。
突然你發現, 在國內新聞這個頁面上,有一個鏈接鏈回「首頁」。作為一隻聰明的蜘蛛,你肯定知道你不用爬回去的吧,因為你已經看過了啊。所以,你需要用你的腦子,存下你已經看過的頁面地址。這樣,每次看到一個可能需要爬的新鏈接,你就先查查你腦子里是不是已經去過這個頁面地址。如果去過,那就別去了。
好的,理論上如果所有的頁面可以從initial page達到的話,那麼可以證明你一定可以爬完所有的網頁。
那麼在python里怎麼實現呢?
很簡單
import Queue
initial_page = "初始化頁"
url_queue = Queue.Queue()
seen = set()
seen.insert(initial_page)
url_queue.put(initial_page)
while(True): #一直進行直到海枯石爛
if url_queue.size()>0:
current_url = url_queue.get() #拿出隊例中第一個的url
store(current_url) #把這個url代表的網頁存儲好
for next_url in extract_urls(current_url): #提取把這個url里鏈向的url
if next_url not in seen:
seen.put(next_url)
url_queue.put(next_url)
else:
break
寫得已經很偽代碼了。
所有的爬蟲的backbone都在這里,下面分析一下為什麼爬蟲事實上是個非常復雜的東西——搜索引擎公司通常有一整個團隊來維護和開發。
2)效率
如果你直接加工一下上面的代碼直接運行的話,你需要一整年才能爬下整個豆瓣的內容。更別說Google這樣的搜索引擎需要爬下全網的內容了。
問題出在哪呢?需要爬的網頁實在太多太多了,而上面的代碼太慢太慢了。設想全網有N個網站,那麼分析一下判重的復雜度就是N*log(N),因為所有網頁要遍歷一次,而每次判重用set的話需要log(N)的復雜度。OK,OK,我知道python的set實現是hash——不過這樣還是太慢了,至少內存使用效率不高。
通常的判重做法是怎樣呢?Bloom Filter. 簡單講它仍然是一種hash的方法,但是它的特點是,它可以使用固定的內存(不隨url的數量而增長)以O(1)的效率判定url是否已經在set中。可惜天下沒有白吃的午餐,它的唯一問題在於,如果這個url不在set中,BF可以100%確定這個url沒有看過。但是如果這個url在set中,它會告訴你:這個url應該已經出現過,不過我有2%的不確定性。注意這里的不確定性在你分配的內存足夠大的時候,可以變得很小很少。一個簡單的教程:Bloom Filters by Example
注意到這個特點,url如果被看過,那麼可能以小概率重復看一看(沒關系,多看看不會累死)。但是如果沒被看過,一定會被看一下(這個很重要,不然我們就要漏掉一些網頁了!)。 [IMPORTANT: 此段有問題,請暫時略過]
好,現在已經接近處理判重最快的方法了。另外一個瓶頸——你只有一台機器。不管你的帶寬有多大,只要你的機器下載網頁的速度是瓶頸的話,那麼你只有加快這個速度。用一台機子不夠的話——用很多台吧!當然,我們假設每台機子都已經進了最大的效率——使用多線程(python的話,多進程吧)。
3)集群化抓取
爬取豆瓣的時候,我總共用了100多台機器晝夜不停地運行了一個月。想像如果只用一台機子你就得運行100個月了...
那麼,假設你現在有100台機器可以用,怎麼用python實現一個分布式的爬取演算法呢?
我們把這100台中的99台運算能力較小的機器叫作slave,另外一台較大的機器叫作master,那麼回顧上面代碼中的url_queue,如果我們能把這個queue放到這台master機器上,所有的slave都可以通過網路跟master聯通,每當一個slave完成下載一個網頁,就向master請求一個新的網頁來抓取。而每次slave新抓到一個網頁,就把這個網頁上所有的鏈接送到master的queue里去。同樣,bloom filter也放到master上,但是現在master只發送確定沒有被訪問過的url給slave。Bloom Filter放到master的內存里,而被訪問過的url放到運行在master上的Redis里,這樣保證所有操作都是O(1)。(至少平攤是O(1),Redis的訪問效率見:LINSERT – Redis)
考慮如何用python實現:
在各台slave上裝好scrapy,那麼各台機子就變成了一台有抓取能力的slave,在master上裝好Redis和rq用作分布式隊列。
代碼於是寫成
#slave.py
current_url = request_from_master()
to_send = []
for next_url in extract_urls(current_url):
to_send.append(next_url)
store(current_url);
send_to_master(to_send)
#master.py
distributed_queue = DistributedQueue()
bf = BloomFilter()
initial_pages = "www.renmingribao.com"
while(True):
if request == 'GET':
if distributed_queue.size()>0:
send(distributed_queue.get())
else:
break
elif request == 'POST':
bf.put(request.url)
好的,其實你能想到,有人已經給你寫好了你需要的:darkrho/scrapy-redis · GitHub
4)展望及後處理
雖然上面用很多「簡單」,但是真正要實現一個商業規模可用的爬蟲並不是一件容易的事。上面的代碼用來爬一個整體的網站幾乎沒有太大的問題。
但是如果附加上你需要這些後續處理,比如
有效地存儲(資料庫應該怎樣安排)
有效地判重(這里指網頁判重,咱可不想把人民日報和抄襲它的大民日報都爬一遍)
有效地信息抽取(比如怎麼樣抽取出網頁上所有的地址抽取出來,「朝陽區奮進路中華道」),搜索引擎通常不需要存儲所有的信息,比如圖片我存來幹嘛...
及時更新(預測這個網頁多久會更新一次)
如你所想,這里每一個點都可以供很多研究者十數年的研究。雖然如此,
「路漫漫其修遠兮,吾將上下而求索」。
所以,不要問怎麼入門,直接上路就好了:)
⑦ 如何讓python文件點開是代碼,並非是表現出的
可以打開py模式,Python控制台程序的源代碼文件。
python作為一種動態語言,其實是一個解釋器軟體包。當Python運行腳本時,在代碼開始進行處理之前,Python還會執行一些步驟。第一步是編譯成所謂的「位元組碼」,如果Python進程擁有寫入許可權,將把程序的位元組碼保存為一個以.pyc為擴展名的文件,如果Python無法在機器上寫入位元組碼,程序仍然可以工作:位元組碼將會在內存中生成並在程序結束時簡單地丟棄。
⑧ 瀏覽器運行python腳本嗎
Python的腳本不是用瀏覽器運行的。要運行Python程序,需要用到Python解釋器。
python解釋器是一種讓其他程序運行起來的程序。Python也有一個名為解釋器的軟體包,當你編寫了一段Python程序,Python解釋器
將讀取程序,並按照其中的命令執行,得出結果。實際上,解釋器是代碼與機器的計算機硬體之間的軟體邏輯層。
當Python包安裝在機器上後,它包含了一些最小化的組件:一個解釋器和支持的庫。根據使用情況的不同,Python解釋器可能採取可執
行程序的形式,或是作為鏈接到另一個程序的一系列庫。根據選用的Python版本的不同,解釋器本身可以用C程序實現,或一些Java類實
現,或者其他形式。無論採用何種形式,編寫的Python代碼必須在解釋器中運行。故,首先要在機器上安裝Python解釋器。
程序執行
編寫或運行Python程序的意義是什麼呢?這個取決於你是從一個程序員還是Python編譯器的角度去看這個問題。
當Python運行腳本時,在代碼開始進行處理之前,Python還會執行一些步驟。
位元組碼編譯
程序執行時,Python內部會先將源代碼編譯成位元組碼的形式。編譯是一個簡單的翻譯步驟,而且位元組碼是源代碼底層的、與平台無關的
表現形式。概括來講,就是Python通過把每一條源代碼分解為單一步驟來將這些源語句翻譯成一組位元組碼指令。這些位元組碼可以提高執
行速度。這個過程對於用戶來說是完全隱藏起來的。
如果Python進程在機器上擁有寫入許可權,那麼它將程序的位元組碼保存為一個以.pyc為擴展名的文件。Python這樣保存位元組碼是作為一種
啟動速度的優化。下一次運行時,如果在上次保存位元組碼後沒有修改過源代碼,Python會載入.pyc文件跳過編譯這一步。當Python必須
重新編譯時,它會自動檢查源文件和位元組碼文件的時間戳。
如果Python無法再機器上寫入位元組碼,程序仍然可以工作:位元組碼將會在內存中生成並在程序結束時丟棄。
Python虛擬機(PVM)
一旦程序編譯成位元組碼(或位元組碼從已經存在的.pyc文件中載入),之後的位元組碼發送到PVM上執行。PVM不是一個獨立的程序,不需要安
裝。PVM是迭代運行位元組碼指令的一個大循環,一個接一個的完成操作。PVM是便宜Python的運行引擎,表現為Python系統的一部
分,並且它是實際運行腳本的組件。技術上講,它才是Python解釋器的最後一步。
⑨ Python 如何開發高效漂亮的輕量級 Web 應用
痛點
從我開始折騰數據分析工具的那一天,就沒有想明白一件事兒 —— 我打算把數據分析的成果做成一個 Web 應用,為什麼這么難?
我需要的核心功能,無非是在網頁上接收用戶輸入,然後做分析處理,把分析結果反饋給用戶,完事兒。
可是這談何容易?
很多人都會微笑著告訴你,想做 Web 應用?這得學前端編程, HTML + Javascript 了解一下吧!
什麼?你還需要在後台做數據分析?那你就得學 Web 框架了。
你說喜歡 Python ?那就學個 Django 或者 Flask 好了。
我也不是沒有看過 Django 和 Flask 的教程,還曾經付費學習過。光是 Django 配置環境,就夠寫一章出來。
作為學習的中間成果,我還寫了這篇《如何用 Python 做 Web 開發?——Django 環境配置》分享給你。
真正讓我痛苦的,不是 Web 框架的操作有多麼瑣碎,而是教程里的案例,為什麼都那麼奇怪?
幾乎所有的教程,都指向一個目標:
來,我教你做一個 blog 出來!
我用你教?!
我要是想用 blog ,可以直接注冊一個免費的啊!為什麼我要自己開發個 blog 出來?
為什麼你就不能告訴我,該怎麼把我目前的數據分析結果,迅速挪到 Web 頁面上,跟用戶實時交互?
雖然二者的結果,都是做一個 Web 應用出來。但是,它們關注的焦點,需要的功能,能一樣嗎?
但是人家寫書和做教程的人,就是不疾不徐,堅持一定要教會你,如何做一個 blog 出來……
你不學,又能怎麼辦呢?你難道想只憑 Python 腳本,就做一個 Web 應用出來?
還真別說,最近,這個事兒從幻想,變成了現實。
樣例
這不,我就用純 Python 腳本寫了個 Web 應用。
我編寫的代碼里,沒有一絲半毫的 Web 框架,Javascript,甚至是 HTML 。
這玩意兒能用嗎?
你自己來試試看。
請你打開瀏覽器,輸入以下鏈接:https://helloworld-streamlit.herokuapp.com/
你會看到下面的初始化界面。
初始化完畢之後,頁面會分成左右兩欄。左面是兩個下拉候選框,分別讓你指定需要分析的數據范圍。
上面一個,是事件類型;
下面一個,是事件發生歸屬地。
如果你看過我的文章《如何用 Python 和循環神經網路預測嚴重交通擁堵?》,應該對這個數據集很熟悉。
只不過,當時我們更注重的,是用循環神經網路搭建了一個嚴重擁堵事件預測模型。
而今天,我們是要進行探索性數據分析,也就是根據我們感興趣的目標,對數據進行整理操作,然後可視化顯示。
選定之後,你會看到右側提示兩個信息:
你篩選之後,數據框包含行數
在層疊地圖上的可視化結果。
怎麼樣?
麻雀雖小,五臟俱全。
雖然咱們這個 Web 應用很簡單,不過交互分析該有的功能和流程,基本上都涵蓋了。
你可能會問:
王老師,編這么一個應用出來,不簡單吧?
讓我帶你到幕後,看看是不是很復雜。
幕後
我把這個應用的全部源代碼,都為你存儲到了 Github 上。請你訪問這個網址獲取:https://github.com/wshuyi/demo-helloworld-streamlit
可以看到,一共包含了 4 個文件。
有意思的是,其中 3 個,包括:
Procfile
setup.sh
requirements.txt
都只是部署到遠程伺服器時,需要用到的配置文件而已。
也就是說,只有最後一個helloworld.py是主角,它包含了實現咱們全部互動式數據分析功能的 Python 腳本文件。
這代碼,少說也得有幾百行吧?
別擔心,打開來看看:
上面這張截圖,就已經包含了實現交互數據分析功能的全部代碼。
神奇吧?
解讀
這么短的代碼,為什麼能有如此強大的功能?
這是因為它背後使用的一個軟體包,叫做streamlit。
它是干什麼用的?
一言以蔽之,給你賦能,讓你能夠不去操心什麼前端後端。只寫 Python ,只關注功能,你就能寫出一個互動式 Web 應用出來。
當然,既然最後是 Web 應用,那麼實際上前後端的功能都是齊備的。
只不過,這些交由 Streamlit 來幫你費心操辦。你根本不用管。
爆發
為什麼會有人做了這么一款神器出來?
原因很簡單,咱們前面提到的痛點,是大夥兒都有的。
咱們這些麻瓜(Muggle),遇到痛點只能忍著。
但是真正的魔法師(優秀程序員),是忍不了的。
在這段來自 PyData LA 2019 的視頻里,Streamlit 的 CEO Adrien Treuille 談及了他在數據智能企業中,長期遭遇的痛點。
最大的痛點,就是數據科學家訓練好機器學習模型後,需要驗證效果,和用戶反饋溝通。
但是,做機器學習的工程師本身,並不掌握這一整套的工具棧。
所以,就得在把全部的數據分析和模型訓練工作完成後,把這東西移交給一個工具製作團隊。
人家做完以後,就告訴數據科學團隊說,做好了。但是注意,現在處於需求凍結階段。這個應用你們可以隨便用,只是別亂改。改壞了我們管不了。因為最近兩個月,我們還得給其他若干數據分析團隊做 app 。大概幾個月以後,我們又能回來幫助你們了……
Adrien Treuille 很敏銳地捕捉到了這個長期痛點,於是在 2018 年, 創立了 streamlit 。
目標很簡單,給數據科學團隊提供簡單的工具,讓他們使用已經掌握的 Python 編程技能,就能直接做 Web 應用。
什麼 「等上兩三個月不許改」?!你們自己慢慢兒玩兒去吧,我們想怎麼改,就怎麼改!
至於做出來的東西嘛,可以是這樣的:
資源
看到這里,是不是心動了?也打算學習一下 Streamlit ?
沒問題,我前面給你提供的樣例,就在 github 上,你可以直接查看源碼。
如果你希望重現這個小應用,並且一步步學習掌握 Streamlit 的基礎知識和技能,我也已經為你寫好了一份手把手的教程。地址在這里https://sspai.com/post/58474。
它不僅教你如何設置環境,安裝工具,寫作代碼,甚至連如何免費部署到 heroku 平台,讓用戶使用,都毫無保留地教給了你。
那篇文章,我用於參加少數派年度徵文活動,所以就不能全文展示在這里了。
讀完以後,如果你覺得有收獲,歡迎在少數派平台上幫我點個贊。謝謝支持!
思考
嘗試過之後,你應該不難發現,Streamlit 給你帶來了什麼。
如果你學過 Javascript 和 Flask, Django 等 Web 應用開發技術,Streamlit 可以加快你的 Web 應用開發與測試進程。
如果你還沒有學過上述技術, Streamlit 可以給你賦能,讓你一下子有了把數據分析結果變成產品的能力。
給你講點兒更激進的。
有人已經希望能用它替代掉 Flask 用於產品發布了。
還有人說,將來寫技術文檔,也應該充分使用 Streamlit 。
甚至,還把它比作了數據科學界的 iPhone 。
這里,它是借喻 iPhone 開啟智能手機時代,說明 Streamlit 的劃時代性。
我不希望你也變得如此激進。
因為這里提到的每一種功用,現在還都有非常專業的工具做的更好,而且新的工具也在不斷涌現。
例如說,我們在多個教程中一直使用 Jupyter Notebook 。
現在憑借 Voila 擴展的加持,你也可以很輕松地把 Jupyter Notebook 變成 Web app ,而且可以免費運行在 mybinder 上面。
但是,你可以看到,一個新的工具,以一種簡單,而不是更繁復的辦法,解決一個功能痛點,是一件多麼令人欣喜的事兒。
看了這篇文章,可能會給你一種誤解,似乎 JavaScript 為代表的前端編程技術,再也不需要學了。
其實不是這樣的。
可以想像,開發門檻降低以後,將來會有更多的人使用 Python 來做 Web 應用。
用 Streamlit 這樣的方法,他們只是開發出了一個原型。
要是想打造精品,就必須精細調控很多細節。
這時候, 如果你精通 Javascript ,那你潛在的合作對象一下子就多了起來,你掌握的這門技術,也就有了更大的價值。
還記得嗎?我不止一次給你強調過,比起一個工具自身的能力來,協作網路更重要。忘了的話,記得復習《學 Python ,能提升你的競爭力嗎?》。
這就好像印刷術的發明,不是讓會寫字這件事兒變得失去價值,而是全社會都增大了對好作品的渴求。深刻的思考,加上有效的文字表達,會讓你生存得更好。
當然,如果你不希望精通寫作技藝,只是想做一個抄書匠糊口。那麼印刷術就可能會替代你的工作,結果就不那麼美妙了。
小結
這篇文章,我為你介紹了 Streamlit 這款有趣的工具。希望你讀過之後,掌握了以下知識點:
藉助 Streamlit ,你可以用純 Python 編制 Web 應用;
學 Web 設計依然很有前途,因為你的潛在合作群體正在迅速擴大;
不要惹魔法師(優秀程序員)。他們的痛點需求會轉化成無盡的戰鬥力,興許會直接替掉你的日常工作。
更多Python知識,請關註:Python自學網!!