CSDN編者按】在構(gòu)建各種應(yīng)用程序方面,JavaScript 和 Python 是兩種很有影響力的編程語言。雖然多年以來 JavaScript 一直是主流編程語言,但近年來 Python 的快速增長已經(jīng)威脅到了該廣泛流行語言的地位。那么未來五年內(nèi),Python 的流行程度能否超越 JavaScript?
以下為譯文:
Melight擁有十余年的軟件開發(fā)經(jīng)驗,目前負(fù)責(zé)技術(shù)培訓(xùn)工作,他說:“隨著技術(shù)領(lǐng)域的最新發(fā)展,我們可能會看到JavaScript與Python在流行程度上并駕齊驅(qū)的競爭局面,而且后者可能會贏得大多數(shù)開發(fā)者的心。”
那么,在未來五年內(nèi)Python的流行程度能否超越JavaScript?
PS:本文不是要比較JavaScript和Python誰才是最佳編程語言。這兩種語言在不同使用環(huán)境中的表現(xiàn)截然不同,一種語言并不能完全取代另一種。
JavaScript最初發(fā)布于1995年,它是一種腳本編程語言,主要用于增添網(wǎng)頁的交互性。
這個語言還有其他高級版本,例如Node.js,可以用于在應(yīng)用程序的服務(wù)器端添加額外的功能。
事實上,據(jù)估計有94.9%的網(wǎng)站用到了JavaScript。
以下是JavaScript流行的三個主要原因:
根據(jù)Stack Overflow的2018年開發(fā)者調(diào)查結(jié)果顯示,JavaScript是最常用的編程語言。
以下Stack Overflow調(diào)查結(jié)果圖顯示了各種編程語言的流行度:
如上圖所示,Stack Overflow的用戶更加喜歡將JavaScript作為他們選擇的語言。
雖然69.8%的調(diào)查用戶表達(dá)了他們對JavaScript的熱愛,但只有38.8%的用戶宣稱他們是Python的鐵桿粉絲。
令人驚訝的是在過去的六年中JavaScript一直占據(jù)榜首。
此外,GitHub還報告說JavaScript仍然是編程語言中的贏家。
根據(jù)2017年底進(jìn)行的一項研究表明,代碼共享網(wǎng)站表示大多數(shù)的開發(fā)人員喜歡使用JavaScript作為他們的代碼庫。
以下GitHub的調(diào)查結(jié)果圖顯示了該平臺上每種編程語言的拉取請求次數(shù):
如上圖所示,大多數(shù)用戶首選使用JavaScript提交拉取請求。
有趣的是,Python是該平臺上使用次數(shù)排第二的語言,表明在不久的將來它將威脅到JavaScript的地位。
Python最初發(fā)布于1991年(所以實際上它比JavaScript更早)。Python是一種功能強(qiáng)大的編程語言,越來越受關(guān)注。
它是一種高級通用語言,可以完成各種類型的任務(wù),包括構(gòu)建Web應(yīng)用程序、分析數(shù)據(jù)和創(chuàng)建機(jī)器學(xué)習(xí)算法。
以下是Python人氣急劇上升的三個主要原因:
2018年9月,Python有史以來第一次被評為TIOBE編程社區(qū)指數(shù)中第三大最受歡迎的編程語言。
該指數(shù)按月計算,并根據(jù)編程語言的搜索引擎結(jié)果進(jìn)行評定。
以下是2018年9月的TIOBE指數(shù)圖:
由于Python在完成各種技術(shù)任務(wù)中的使用越來越多,因此Stack Overflow將其稱為“增長最快的主要編程語言”。
下面Stack Overflow的調(diào)查結(jié)果圖顯示了高收入國家在2012至2018年間Python與其他編程語言的增長對比:
如上關(guān)于編程語言趨勢的數(shù)據(jù)所示,Python于2017年6月首次在Stack Overflow上整體問題概覽中名列榜首(緊隨其后的是JavaScript)。
這說明了Python的顯著增長,因為在2012年該平臺上有關(guān)Python的興趣非常低;事實上,該語言從2012年至今增長了2.5倍。
此外,Stack Overflow還構(gòu)建了一個模型,用于預(yù)測未來兩年主要編程語言的未來流量。
以下是預(yù)測結(jié)果:
令人驚訝的是,該模型預(yù)測Python將于2020年超越JavaScript雄踞榜首。
此外,Stack Overflow還比較了2016年至2017年間主要編程語言的流量同比增長率。
以下是分析結(jié)果:
如上有關(guān)最新編程語言趨勢圖所示,Python的同比增長率高達(dá)27%,足以表明其快速的增長。
意外的是,JavaScript在這兩年內(nèi)只有非常小的流量增長。
雖然多年來JavaScript一直被譽(yù)為互聯(lián)網(wǎng)的“通用語言”,但是Python可能會超越這一稱號(據(jù)數(shù)據(jù)顯示Python呈現(xiàn)出了令人難以置信的增長)。
盡管如此,時間將證明Python是否擔(dān)得起這樣的稱號。
重要的是,在你為未來做準(zhǔn)備時,可以根據(jù)軟件開發(fā)中這些不斷變化的趨勢選擇最合適的編程語言。
那么,你認(rèn)為哪種語言將主導(dǎo)Web開發(fā)的未來?在未來五年內(nèi),Python能否取JavaScript而代之?請在下方留言說出你的想法。
原文:https://hackernoon.com/could-pythons-popularity-outperform-javascript-in-the-next-five-years-abed4e307224
作者:Michael J. Garbade,Education Ecosystem的創(chuàng)始人兼首席執(zhí)行官。
譯者:彎月,責(zé)編:郭芮
“征稿啦”
CSDN 公眾號秉持著「與千萬技術(shù)人共成長」理念,不僅以「極客頭條」、「暢言」欄目在第一時間以技術(shù)人的獨特視角描述技術(shù)人關(guān)心的行業(yè)焦點事件,更有「技術(shù)頭條」專欄,深度解讀行業(yè)內(nèi)的熱門技術(shù)與場景應(yīng)用,讓所有的開發(fā)者緊跟技術(shù)潮流,保持警醒的技術(shù)嗅覺,對行業(yè)趨勢、技術(shù)有更為全面的認(rèn)知。
如果你有優(yōu)質(zhì)的文章,或是行業(yè)熱點事件、技術(shù)趨勢的真知灼見,或是深度的應(yīng)用實踐、場景方案等的新見解,歡迎聯(lián)系 CSDN 投稿,聯(lián)系方式:微信(guorui_1118,請備注投稿+姓名+公司職位),郵箱(guorui@csdn.net)。
近臨近開學(xué)了,大家都在忙著準(zhǔn)備各種學(xué)習(xí)的資料,準(zhǔn)備在新的學(xué)期好好學(xué)習(xí),充實自己。小編身邊的同學(xué)也是如此,最近,小編的同學(xué)小麗就遇到了一個很棘手的問題。
她想將一個網(wǎng)頁的Python學(xué)習(xí)的教程打印下來,方便自己來學(xué)習(xí),但是上千頁的教程,如果通過手動的方式,一個一個的去轉(zhuǎn)成pdf并保存到本地,實在是麻煩的不。
這就是一個html轉(zhuǎn)pdf的問題,其實網(wǎng)上有很多不錯的html資源,但是苦于學(xué)習(xí)起來,不方便!于是小編就跟小麗保證,這點小事包在我身上。今天,小編就跟分享一下如何用Python把html資料變成pdf。
如今網(wǎng)上的在線學(xué)習(xí)資料可謂是多如牛毛,為了方便講解,小編就利用python3.9.2的中文文檔作為演示的例子,來將其抓取并保存到本地,其網(wǎng)頁鏈接如下:
https://docs.python.org/zh-cn/3.9/tutorial/index.html
打開上述鏈接后,大家會在網(wǎng)頁中找到不同內(nèi)容的鏈接地址,包括了基礎(chǔ)的python字符、python語法等內(nèi)容。
在上圖中,我們需要格外關(guān)注的是紅色方格標(biāo)注的鏈接,每個鏈接都會跳轉(zhuǎn)到對應(yīng)的子網(wǎng)頁中,而在子網(wǎng)頁中,就是我們想要保存的內(nèi)容。
可以看到,上圖中,在python速覽子頁面中,包含了我們需要提取的文字內(nèi)容。所以將html內(nèi)容保存為pdf的第一步便是獲取到子頁面的鏈接。由于教程大都是固定內(nèi)容,因此對于教程的網(wǎng)頁,大都采用的是靜態(tài)頁面,在網(wǎng)頁源代碼中可以很輕松地找到子頁面的網(wǎng)頁鏈接。
對于子網(wǎng)頁的鏈接抓取,程序如下圖所示:
程序中,通過BeautifulSoup庫來解析網(wǎng)頁源代碼,然后提取所有的子頁面鏈接地址并返回,如果抓取失敗,則直接返回None。
03.html轉(zhuǎn)pdf
在得到子網(wǎng)頁的鏈接后,接下來就是將html的子網(wǎng)頁保存為pdf文件。小編使用的pdfkit庫,pdfkit庫可以將網(wǎng)頁保存為pdf文檔。首先小編來介紹一下pdfkit庫的安裝。
按照上述的操作流程,就可以安裝pdfkit庫。對于pdfkit庫的使用,常見的用法有以下三種:
上面的程序主要完成以下幾步:
首先需要指定wkhtmltopdf.exe文件的路徑;
因此,pdfkit庫只能將子網(wǎng)頁保存為單獨的pdf文檔,無法直接通過pdfkit庫將所有的子網(wǎng)頁拼接成一個完整的pdf文檔,小編通過PyPDF2庫中的PdfFileMerger類來實現(xiàn)pdf文檔的拼接。程序如下圖所示。
程序中首先將所有的html網(wǎng)頁保存為單獨的pdf文檔,然后通過PdfFileMerger類對象來實現(xiàn)pdf文檔的拼接。最后就可以得到全部的pdf內(nèi)容。最后我們通過視頻的展示,來看一下程序的效果吧。
除此之外,程序不光可以抓取python3.9的中文文檔,針對其他的在線文檔,只需要對獲取網(wǎng)頁鏈接的程序進(jìn)行修改即可抓取,例如對于Flask中文文檔的抓取,程序只需要按照下圖進(jìn)行修改,即可將Flask的在線文檔保存為PDF文檔。
學(xué)習(xí)Python其實非常有趣,也很有用。因為Python有大量的現(xiàn)成的庫,可以幫助我們把工作中的很多瑣碎的煩事輕松解決。小編將上述的程序稍加修改,很快就幫阿麗搞定了教程,保存為pdf發(fā)送給了她,小編與女神的關(guān)系更拉近了一步
深入Python Web開發(fā)的過程中,HTML模板渲染是構(gòu)建動態(tài)Web應(yīng)用的重要環(huán)節(jié)。今天將詳細(xì)探討如何使用Python中最流行的模板引擎之一——Jinja2來進(jìn)行高效且靈活的模板渲染。通過具體的代碼示例,將了解如何結(jié)合Flask框架與Jinja2實現(xiàn)數(shù)據(jù)與視圖的完美分離。
Jinja2是一個強(qiáng)大的現(xiàn)代模板引擎,設(shè)計用于Python web開發(fā)項目,它支持變量替換、控制結(jié)構(gòu)、過濾器和宏等豐富的功能。Flask框架默認(rèn)集成并推薦使用Jinja2進(jìn)行模板渲染,使其成為Python Web開發(fā)者手中不可或缺的工具。
如果已經(jīng)安裝過Flask,Jinja2通常已隨Flask一同安裝。若需要單獨安裝:
pip install Jinja2
1.創(chuàng)建模板文件
在項目中創(chuàng)建一個名為templates的文件夾,并在其內(nèi)放置我們的HTML模板文件,例如index.html:
<!-- templates/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Html渲染示例</title>
</head>
<body>
<h1>{{ title }}</h1>
<p>Welcome to {{ site_name }}!</p>
<ul>
{% for item in items %}
<li>{{ item }}</li>
{% endfor %}
</ul>
</body>
</html>
在這個模板中,我們用{{ variable }}表示變量占位符,{% %}表示控制結(jié)構(gòu)
2.Flask中加載和渲染模板
在Flask應(yīng)用中,我們需要導(dǎo)入render_template函數(shù)來加載并渲染模板:
from flask import Flask, render_template
app=Flask(__name__)
@app.route('/')
def home():
# 定義傳遞給模板的數(shù)據(jù)
title='主頁'
site_name='Html模板渲染示例'
items=['Item 1', 'Item 2', 'Item 3']
# 渲染模板并將數(shù)據(jù)傳遞給模板
return render_template('index.html', title=title, site_name=site_name, items=items)
if __name__=='__main__':
app.run(debug=True)
當(dāng)用戶訪問主頁時,F(xiàn)lask會調(diào)用home函數(shù),其中render_template函數(shù)會查找templates目錄下的index.html模板,并將定義好的變量替換到相應(yīng)的位置。
1. 控制結(jié)構(gòu)
除了簡單的循環(huán)外,Jinja2還支持條件判斷和其他邏輯操作:
<!-- 在模板中添加條件判斷 -->
{% if user.is_authenticated %}
<p>Welcome, {{ user.username }}!</p>
{% else %}
<p>Please log in.</p>
{% endif %}
2. 過濾器
Jinja2內(nèi)置了眾多過濾器,可以對變量進(jìn)行處理,如格式化日期、轉(zhuǎn)換大小寫等:
<!-- 使用過濾器格式化日期 -->
<p>The date is: {{ current_date|date("Y-m-d") }}</p>
3. 宏
宏允許復(fù)用或封裝常見的HTML片段,提高代碼可讀性和維護(hù)性:
{# 在一個單獨的macros.html模板中定義宏 #}
{% macro render_item(item) %}
<div class="item">
<h3>{{ item.title }}</h3>
<p>{{ item.description }}</p>
</div>
{% endmacro %}
然后在其他模板中引入并使用該宏:
{% from 'macros.html' import render_item %}
<ul>
{% for item in items %}
{{ render_item(item) }}
{% endfor %}
</ul>
通過本文,我們已經(jīng)深入了解了Jinja2模板引擎的基礎(chǔ)使用方法以及其高級特性。掌握好Jinja2能夠顯著提升你的Web應(yīng)用開發(fā)效率,實現(xiàn)更復(fù)雜、更美觀的動態(tài)頁面布局。
關(guān)注我,手把手帶你快速入門Python Web編程!
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。