如何运行Brython

如何运行Brython

要理解Brython的工作原理,我们首先需要用我们偏好的方法安装Brython,这个我们已经在“如何安装Brython文章”中讨论过。

在讨论Brython的工作原理之前,我们需要了解以下几点:

  • 如何在JavaScript中实现Python
  • 如何将Python转换为JavaScript并在浏览器中执行
  • JavaScript文件的两个主要库:
    • brython_stdlib.js,这是Brython的标准库
    • brython.js,这是Brython语言的核心
  • 如何调用brython()函数,它会编译以text/python类型存储在脚本标签中的Python程序

在本文中,我们将讨论Brython的核心组件、标准库以及它的工作原理。

Brython的核心组件

brython.js和brython.min.js(Brython引擎的压缩版本)包含了Brython的核心组件。这两个文件都包含以下关键组件:

brython.js和brython.min.js(Brython引擎的压缩版本)包含了Brython的核心组件。这两个文件都包含以下关键组件:

  • BRYTHON: 它是一个JavaScript全局对象,保存了运行Python脚本所需的所有内部对象。当我们编写Brython应用程序时,不直接使用BRYTHON。如果我们同时查看Python和JavaScript的Brython程序,我们会注意到BRYTHON经常出现。尽管我们不需要使用这个对象,但当我们在浏览器控制台看到错误或者想要调试程序时,我们应该知道它的存在。
  • Brython(): 它是主要的JavaScript函数,在JavaScript的全局命名空间中暴露出来。我们不调用这个函数,就无法执行任何Python程序。这是唯一需要显式调用的JavaScript函数。
  • Browser: 它是浏览器的模块,公开了在前端网站应用程序中常用的JavaScript对象,比如Document Object Model接口用于文档,浏览器窗口用到window对象。
  • 内置类型: 这些是在JavaScript中实现的Python内置类型。例如py_dicts.js、py_string.js和py_int.js分别是dict、str和int的实现。

Brython标准库

在了解了Brython核心文件的基础上,brython.js,现在我们要了解它的配套文件brython_stdlib.js。

Python标准库由brython_stdlib.js进行提供。在生成brython_stdlib.js文件之后,Brython可以将Python标准库编译成JavaScript,并将结果链接到brython_stdlib.js包中。

Brython应该与CPython更加接近,CPython是Python的首选实现方式。由于Brython在网页浏览器的上下文中运行,因此有一些限制,例如浏览器不允许直接访问文件系统,因此无法通过os.open()函数打开文件。与网页浏览器无关的函数无法实现。

例如:

让我们在Brython环境中运行代码

import os
os.unlink()

输出:

TypeError                                 Traceback (most recent call last)
<ipython-input-1-85e82a7fc62f> in <module>
      1 import os
----> 2 os.unlink()

TypeError: unlink() missing required argument 'path' (pos 1)

在这里,os.unlink()引发了一个异常,因为它不安全地从浏览器环境中删除本地文件,而文件和目录条目API只是一个默认的提案。

Brython只支持本地Python模块。除非它们已在JavaScript中重新实现,否则不支持C语言实现的Python模块。例如,hashlib模块是用C语言编写的,并在Brython中用JavaScript实现。用户和开发者还可以参考Brython发行版中的模块列表,以比较CPython的实现。

用户需要包括brython_stdlib.js和brython_stdlib.min.js以导入Python标准库中的模块。

Brython工作原理

现在,让我们看看Brython在浏览器中的工作方式,浏览器只知道它们的JavaScript引擎。我们将通过一个示例和浏览器中可用的工具来了解在浏览器中执行Python代码所涉及的过程。

例如:

<!doctype html>
<html>
  <head>
    <script
      src = "https://raw.githack.com/brython-dev/brython/master/www/src/brython.js">
    </script>
  </head>
  <body onload = "brython()">
    <script type = "text/python">
      import browser
      browser.alert("Hello JavaTpoint!")
    </script>
  </body>
</html>

加载和解析HTML页面后,brython()将按照以下步骤进行操作:

  1. 它将读取存储在元素<script type="text/python">中的Python程序
  2. 然后将Python程序编译为等效的JavaScript代码
  3. 然后,它将使用eval()函数评估生成的JavaScript代码

例如:

#将Python代码嵌入到HTML文件中:

    <script type = "text/python">
      import browser
      browser.alert("Hello JavaTpoint!")
    </script>

第二个选项是从单独的文件下载Python程序:

例如:

<head>
    <script src = "https://www.forexample.com/main.py"
            type = "text/python">
    </script>
</head>

在上述情况下,Python文件将如下所示:

import browser
browser.alert("Hello JavaTpoint?)

将Python程序与HTML程序分离的过程是一种更清晰的方法。这还允许用户利用代码编辑器的功能和优势。一些编辑器支持将JavaScript嵌入到HTML中,但不支持将Python嵌入到HTML中。

Brython的内部机制

在本文的这一部分中,我们将深入介绍将Python程序转化为JavaScript的过程。

为了说明这个过程,并了解Brython的内部机制,用户应该按照以下步骤进行操作:

  • 首先,打开Brython的主页
  • 然后通过点击Windows和Linux操作系统的Ctrl + Shift + I,或者Mac操作系统的CMD + ALT + I打开网页控制台

在浏览器JavaScript的REPL中,用户应该输入并执行以下命令:

例如:

eval(__BRYTHON__.python_to_js("import browser; browser.console.log('Hello Brython in JavaTpoint!')"));

然后python_to_js()将解析并编译以上程序为JavaScript,然后在网页浏览器中执行JavaScript。用户将得到以下输出:

如何运行Brython

应用eval()函数到Brython程序后,在浏览器控制台中将打印出”Hello Brython in JavaTpoint!”。JavaScript的函数将返回undefined,这是JavaScript函数的默认返回值。

无论用户构建Brython应用时,不需要在BRYTHON JavaScript模块中显式调用该函数。上面的示例仅用于解释Brython在后台的操作方式。

JavaScript对象BRYTHON也可在JavaScript全局作用域中使用,并且用户可以通过浏览器控制台访问它。

结论

在本文中,我们讨论并解释了Brython的核心组件和标准库,以及Brython在浏览器上的工作原理。我们还讨论了Brython的内部机制以及它如何在后台操作网站。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程