Anaconda公司在最近的PyConUS2022发布了PyScript,引发轰动......
1 PyScript简介
PyScript是一个框架,允许用户在浏览器中使用HTML的界面和Pyodide、WASM以及现代网络技术的力量来创建丰富的Python应用程序。PyScript框架为各种经验水平的用户提供了使用一种具有无数应用的、易于学习的编程语言的机会。
多才多艺的Python
学研君不禁感叹,Python真是太万能了,现在除了用来用来写后端、爬虫、AI/ML,竟然也可以写前端了😱!
赶快翻开它的官网(https://pyscript.net/
),PyScript具有如下特性:
-
浏览器中的Python。启用插入式内容、外部文件托管(由Pyodide项目实现,谢谢!)和应用程序托管,而无需依赖服务器端配置。
-
Python 生态系统。运行许多流行的Python和科学堆栈的软件包(如numpy、pandas、scikit-learn等)。
-
Python与JavaScript。Python和Javascript对象和命名空间之间的双向通信。
-
环境管理。允许用户定义包括哪些包和文件以使页面代码运行。
-
可视化应用开发。使用现成的策划UI组件,如按钮、容器、文本框等。
-
灵活的框架。一个灵活的框架,可以利用它来直接在Python中创建和分享新的可插拔和可扩展的组件。
这差不多就是说PyScript = HTML
,再加上Python有丰富的库和可访问的生态系统,PyScript的功能强大多了!
幸福来的如此突然哈哈哈......
2 PyScript的使用
2.1 导入PyScript
要尝试PyScript,用以下方法将pyscript文件导入html页面:
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
然后就可以在html页面中使用PyScript组件。PyScript目前实现了以下元素。
-
<py-script>
: 可以用来定义在网页中可执行的Python代码。该元素本身不会被渲染到页面上,只是用来添加逻辑。 -
<py-repl>
: 创建一个REPL组件,作为代码编辑器呈现在页面上,允许用户编写可执行代码。
2.2 PyScript示例
那就来试一试吧
从最简单的Hello, World!开始。创建一个html
文档,文件名为py_helloworld.html
,输入如下代码:
<html>
<head>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
</head>
<body> <py-script> print('Hello, World!') </py-script> </body>
</html>
注意在HTML主体中使用了标签。这就是写Python代码的地方。
可以在<py-script>
标签中输入多行Python代码。我们来试试计算圆周率π。
创建文件pi.html
。
<html>
<head>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
</head>
<body>
<py-script>
print("Let's compute π:")
def compute_pi(n):
pi = 2
for i in range(1,n):
pi *= 4 * i ** 2 / (4 * i ** 2 - 1)
return pi
pi = compute_pi(100000)
s = f"π is approximately {pi:.3f}"
print(s)
</py-script>
</body>
还可以在<py-script>
标签中import模块,比如matplotlib。咱们试试用比如matplotlib画一个散点图。创建文件比如matplotlib.html
,代码如下所示。
<html>
<head>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
<py-env>
- numpy
- matplotlib
</py-env>
</head>
<body>
<h1>Let's plot random numbers</h1>
<div id="plot"></div>
<py-script output="plot">
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randn(1000)
y = np.random.randn(1000)
fig, ax = plt.subplots()
ax.scatter(x, y)
fig
</py-script>
</body>
</html>
太神奇了有木有,历史翻开了新篇章!
大家不妨亲自跑一跑代码,看看效果如何。
3 进阶
PyScript在GitHub上准备了更多的示例,访问 https://github.com/pyscript/pyscript/tree/main/pyscriptjs
。
像网站一样打开浏览各种案例。
运行方法:
$ npm install --global rollup
$ npm install
$ npm run dev
PyScript可以让开发体验上高度统一,对于python开发者来说,开发Web应用的门槛可以更低了。
Python自从1989年诞生以来,应用范围越来越广。
但是也越来越觉得学不动了......
幸好以前看过下面几本书,所以才跟上了潮流,推荐给大家。