• python又搞事情,想一统天下


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


    git地址:https://github.com/pyscript/pyscript

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

    pyscript官网:https://pyscript.net/

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


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

     
    

    1. <html>|
    2.     ...|
    3.     <py-script> print('Now you can!') </py-script>|
    4. </html>|

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


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

    1. 首先安装依赖 cnpm i

    2. 然后先在本地运行 npm run dev

    3. 打开 http://localhost:8080/

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

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

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

     
    
    1. <body>
    2.     Hello world! <br>
    3.     This is the current date and time, as computed by Python:
    4.     <py-script>
    5. from datetime import datetime
    6. now = datetime.now()
    7. now.strftime("%m/%d/%Y, %H:%M:%S")
    8.     </py-script>
    9.   </body>

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

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

    再看代码:

     
    

    1. ...
    2.  <py-script src="/todo.py">  </py-script>
    3. ...
    4. <section>
    5.     <div class="text-center w-full mb-8">
    6.       <h1 class="text-3xl font-bold text-gray-800 uppercase tracking-tight">To Do List</h1>
    7.     </div>
    8.     <div>
    9.       <input id="new-task-content" class="border flex-1 mr-3 border-gray-300 p-2 rounded" type="text">
    10.       <button id="new-task-btn" class="p-2 text-white bg-blue-600 border border-blue-600 rounded" type="submit" pys-onClick="add_task">
    11.         Add task
    12.       </button>
    13.     </div>
    14.     <py-list id="myList"></py-list>
    15.     <div id="list-tasks-container" class="flex flex-col-reverse mt-4">
    16.   </div>
    17.     <template id="task-template">
    18.         <section class="task bg-white my-1">
    19.             <label for="flex items-center p-2 ">
    20.               <input class="mr-2" type="checkbox" class="task-check">
    21.               <p class="m-0 inline"></p>
    22.             </label>
    23.         </section>
    24.       </template>
    25.   </section>

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

     
    

    1. def add_task(*ags, **kws):
    2.    ...

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


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

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


     

    和一些图表页面:

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

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

    有网友说又可以少掌握一门语言多实现一项功能。不过从目前用户体验这个角度来看,pyscript想要取代JavaScript在浏览器上的地位可能还有一段路要走,但是却给我们提供了玩python的另一条新道路。pyscript还可以朝着哪些方面发展,欢迎大家提出自己的看法。

    【python学习】
    学Python的伙伴,欢迎加入新的交流【君羊】:1020465983
    一起探讨编程知识,成为大神,群里还有软件安装包,实战案例、学习资料

  • 相关阅读:
    2023年Java毕业设计题目如何选题?Java毕业设计选题大全
    人机融合态势感知的压缩
    回顾vmware 补充细节
    【HJL-E6/A数字式交流电流继电器】
    java项目之小说阅读网站(ssm源码+文档)
    C高级day4循环语句
    代码随想录算法训练营第四十四天| 01背包理论基础1、01背包理论基础2、LeetCode 416 分割等和子集
    Java 阿里云存储OSS,上传文件,删除文件
    Python快速刷题网站——牛客网 数据分析篇(八)
    Java 中删除线性表(如数组或列表)中指定区间的元素
  • 原文地址:https://blog.csdn.net/SixStar_FL/article/details/124941374