Python真的要一统天下了?

Python 最近又在搞大事情,就在最近,github上突然多了一个神奇的项目

GitHub地址:github.com/pyscript/py...

并且最近一直在更新。一看这个名字就让我们不禁想起JavaScript,再去官网一看

pyscript官网:pyscript.net/

这家伙不仅模仿了JavaScript的名字,甚至连身子都想要取而代之!

官方对pyscript的期望是可以在浏览器上直接运行python。

bash 复制代码
<html>|
    ...|
    <py-script> print('Now you can!') </py-script>|
</html>|

怀着一颗好奇心,我们把github上的代码克隆下来,发现是一个基于node的前端项目,那第一步先把他跑起来!

进入\pyscript-main\pyscriptjs目录下,

  1. 首先安装依赖 cnpm i
  2. 然后先在本地运行 npm run dev
  3. 打开 http://localhost:8080/

首页是一个纯纯的html文件,在\pyscript-main\pyscriptjs\examples目录下的index.html,如下图:

img.png

我们先来看看最简单的Hello world页面,如下图:

img_1.png

页面确实够简单,再看看它的代码:

perl 复制代码
<body>
    Hello world! <br>
    This is the current date and time, as computed by Python:     <py-script>
from datetime import datetime
now = datetime.now()
now.strftime("%m/%d/%Y, %H:%M:%S")
    </py-script>  
  </body>

想必大家都可以看得懂这段代码,精彩的点在于,只要在标签中,就可以直接使用python语法来进行操作了,并且似乎比JavaScript还要直接嗷,甚至还有点数据绑定的意思。

再来看看另一个经典的例子,todo_list,对应todo.html,如下图:

img_2.png

再看代码:

xml 复制代码
... 
 <py-script src="/todo.py">  </py-script>
...
<section>
    
    <div class="text-center w-full mb-8">      
      <h1 class="text-3xl font-bold text-gray-800 uppercase tracking-tight">To Do List</h1>   
    </div>    
    <div>      
      <input id="new-task-content" class="border flex-1 mr-3 border-gray-300 p-2 rounded" type="text">      
      <button id="new-task-btn" class="p-2 text-white bg-blue-600 border border-blue-600 rounded" type="submit" pys-onClick="add_task">        
        Add task      
      </button>    
    </div>
    
    <py-list id="myList"></py-list>    
    <div id="list-tasks-container" class="flex flex-col-reverse mt-4">  
  </div>
    
    <template id="task-template">        
      <section class="task bg-white my-1">            
          <label for="flex items-center p-2 ">              
            <input class="mr-2" type="checkbox" class="task-check">              
            <p class="m-0 inline"></p>            
          </label>       
        </section>      
      </template>
  
  </section>

在代码最上面竟然引入了一个.py文件,代码中使用pys-onClick绑定了add_task方法,而add_task方法在引入的todo.py中进行了声明:

python 复制代码
def add_task(*ags, **kws):   
   ...

也就是说,pyscript真的可以做到和JavaScript在浏览器中运行时一样的调用体验,甚至还可以在浏览器中引用python类库!

在另一个todo_pylist.html页面中,提供了直接在浏览器中运行python命令的方法,

img_3.png

为了显示自己在处理复杂图形方面的能力,示例中还提供了和three.js结合而成的webgl示例页面:

img_4.png

和一些图表页面:

img_5.png

可以看到,在功能实现上,pyscript基本可以实现JavaScript能够实现的功能。

不过从目前的体验上来看,在浏览器上运行python属实是够慢的,每次打开页面都得等好几秒,并且第一次打开页面的时候竟然还要下载python类库,github上已经有人提出了这个问题,并且官方回答他们已经努力了,并且还在继续努力。

相关推荐
今儿敲了吗11 小时前
python基础学习笔记第五章——容器
笔记·python·学习
qq_3349031511 小时前
使用Flask快速搭建轻量级Web应用
jvm·数据库·python
E_ICEBLUE11 小时前
在 Python 中对比 Word 文档:自动生成修订报告
python·word
代码探秘者11 小时前
【大模型应用】6.RAG 场景下的向量+关键词混合检索
java·开发语言·人工智能·python·spring
小小怪75012 小时前
将Python Web应用部署到服务器(Docker + Nginx)
jvm·数据库·python
Sylvia33.12 小时前
体育数据API实战:用火星数据实现NBA赛事实时比分与状态同步
java·linux·开发语言·前端·python
QQ86066001612 小时前
Python基于Vue的”黄山旅游网站的设计与实现 django flask pycharm
vue.js·python·旅游
2401_8442213212 小时前
使用PictureBox实现图片缩放与显示的深入探讨
jvm·数据库·python·算法
@我漫长的孤独流浪12 小时前
Python爬虫实战:从入门到精通
开发语言·爬虫·python
05大叔12 小时前
AI智能伴侣-文件保存 会话的 保存 新建 加载 删除
python