我40岁了, 还在写程序。JS 想调 ? Bun.$ 轻松搞定。// 1.js import { $ } from bun; const result awaitBun执行python代码 - 今日头条py -c print(/py -c print(/py -c print(Hello from Python!).text(); console.log(result);仅用三行代码, 它就这样运行起来了。运行bun 1.js, 终端出现Hello from! 这个结果。今天你会学到这些关键词关键词解释Bun.$Bun 内置的 shell 模板, 反引号里写命令直接跑子进程跑挂时抛的错, 带退出码和top-level awaitBun 支持模块顶层直接 await, 不用包 async子进程操作系统层面的进程,跟父进程相互独立环境变量进程间传值的方式, 用 os. 读凭啥能调没啥神秘的。原是个具备可执行功能的程序, 在特定环境下其中一种的称呼是py, 而在Mac或者Linux环境所处状况下的称呼是另一种。你开启终端敲击 py hello.py, 系统便寻得解释器, 将脚本给予它运行本恩斯币美元所做的正是这件事情。不同之处仅仅在于, 不需要打开终端, 在文件里书写反引号来处理即可。例 1: 调外部 .py 文件hello.py:# hello.py import math import sys import io # 强制 stdout 用 UTF-8, 避免 Windows 终端乱码 sys.stdout io.TextIOWrapper(sys.stdout.buffer, encodingutf-8) def circle_area(radius: float) - float: 根据半径计算圆的面积 return math.pi * radius ** 2 if __name__ __main__: r 5 area circle_area(r) print(f半径 {r} 的圆, 面积是 {area:.2f})2.js:// 2.js import { $ } from bun; try { const output awaitBun执行python代码 - 今日头条py -c print(/py -c print(/py hello.py.text(); console.log(output); } catch (error) { console.error(Python 脚本执行出错:, error); }跑一下:bun 2.js输出:半径 5 的圆, 面积是 78.54首先, 在 JS 当中, 有一个 await 存在着, 紧接着, math.pi 随之就被安排好了。整个流程是这样的, 先是 JS 发送命令, 然后去接活儿, 最后结果再回传给 JS。整个过程那叫一个丝滑无比。例 2: 给 传参数JS 这头有数据, 想喂给 处理, 咋整?最为稳妥的方式乃是采用走环境变量, 通过.env() 将变量投递进子进程之中, 然而要借助os. 来承接, 如此这般既具备安全性, 又显得简易, 并且还能实现跨平台。3.js:// 3.js import { $ } from bun; try { const number 7; const output awaitBun执行python代码 - 今日头条py -c print(/py -c print(/py calc.py .env({ NUMBER: String(number) }) .text(); console.log(output); } catch (error) { console.error(出错:, error); }calc.py:import sys import io import os sys.stdout io.TextIOWrapper(sys.stdout.buffer, encodingutf-8) n int(os.environ.get(NUMBER, 0)) print(f输入 {n}, 平方是 {n ** 2})跑一下:bun 3.js输出:输入 7, 平方是 49数据过去, 结果回来, 干净利落。例 3: 接 JSON 返回值算完想回传给 JS?把它致使吐出JSON, Bun在这里一旦接上.json(), 事情便完成了。跨越语言去传递结构化数据就是如此简便。4.js:// 4.js import { $ } from bun; try { const data awaitBun执行python代码 - 今日头条py -c print(/py -c print(/py data.py.json(); console.log(姓名:, data.user.name); console.log(年龄:, data.user.age); } catch (error) { console.error(出错:, error); }data.py:import sys import io import json sys.stdout io.TextIOWrapper(sys.stdout.buffer, encodingutf-8) result {user: {name: 老王, age: 40}} print(json.dumps(result, ensure_asciiFalse))跑一下:bun 4.js输出:姓名: 老王 年龄: 40从前端产出 JSON, 通过 JS 直接拿到对象, 直接使用 data.user.name, 无需进行解析, 极为顺畅。例 4: 错误处理运行出错然后退出, Bun 这个工具会抛出相应情况。退出时所产生的代码, 就是退出码, 而错误信息输送出来那便是错误输出。在进行程序调试的阶段, 这两个方面的内容是最为具有帮助作用的。5.js:// 5.js import { $ } from bun; try { awaitBun执行python代码 - 今日头条py -c print(/py -c print(/py error.py.text(); } catch (error) { console.error(退出码:, error.exitCode); console.error(错误信息:, error.stderr.toString()); }error.py:# error.py import sys sys.stderr.write(出大事了\n) sys.exit(1)跑一下:bun 5.js输出:退出码: 1 错误信息: 出大事了报错信息一清二楚, 排错轻松。编码坑我头回在 上跑, 输出长这样:뾶 5 Բ 78.54啥玩意儿? 全是问号方块。这一查才赫然知晓, 原本是默认GBK编码, 然而输出的却是UTF-8, 如此这般字符集全然对不上, 进而呈现出模糊不清的状况了。修法贼简单, 在 脚本顶上加上这几行:import sys import io sys.stdout io.TextIOWrapper(sys.stdout.buffer, encodingutf-8)硬给套转成 UTF-8 格式, 不管谁来进行调试都不会出现紊乱情况, 这几行内容放置于任何脚本的最开头位置均可正常使用, 在此建议予以收藏。写在最后Bun.$ 这玩意儿, 用起来就一个字: 爽。从前妄图在 JS 内部实施调用行为时, 必须开启相应程序, 精心拼凑指令, 妥善料理流程, 细致剖析输出内容, 经过一连串如此这般的操作, 其过程可谓迅猛如虎般一气呵成。现在? 一个反引号, 完事儿。
python user-angets 40岁还在写代码?Bun.$三行搞定Python,老码农的逆袭神器
我40岁了, 还在写程序。JS 想调 ? Bun.$ 轻松搞定。// 1.js import { $ } from bun; const result awaitBun执行python代码 - 今日头条py -c print(/py -c print(/py -c print(Hello from Python!).text(); console.log(result);仅用三行代码, 它就这样运行起来了。运行bun 1.js, 终端出现Hello from! 这个结果。今天你会学到这些关键词关键词解释Bun.$Bun 内置的 shell 模板, 反引号里写命令直接跑子进程跑挂时抛的错, 带退出码和top-level awaitBun 支持模块顶层直接 await, 不用包 async子进程操作系统层面的进程,跟父进程相互独立环境变量进程间传值的方式, 用 os. 读凭啥能调没啥神秘的。原是个具备可执行功能的程序, 在特定环境下其中一种的称呼是py, 而在Mac或者Linux环境所处状况下的称呼是另一种。你开启终端敲击 py hello.py, 系统便寻得解释器, 将脚本给予它运行本恩斯币美元所做的正是这件事情。不同之处仅仅在于, 不需要打开终端, 在文件里书写反引号来处理即可。例 1: 调外部 .py 文件hello.py:# hello.py import math import sys import io # 强制 stdout 用 UTF-8, 避免 Windows 终端乱码 sys.stdout io.TextIOWrapper(sys.stdout.buffer, encodingutf-8) def circle_area(radius: float) - float: 根据半径计算圆的面积 return math.pi * radius ** 2 if __name__ __main__: r 5 area circle_area(r) print(f半径 {r} 的圆, 面积是 {area:.2f})2.js:// 2.js import { $ } from bun; try { const output awaitBun执行python代码 - 今日头条py -c print(/py -c print(/py hello.py.text(); console.log(output); } catch (error) { console.error(Python 脚本执行出错:, error); }跑一下:bun 2.js输出:半径 5 的圆, 面积是 78.54首先, 在 JS 当中, 有一个 await 存在着, 紧接着, math.pi 随之就被安排好了。整个流程是这样的, 先是 JS 发送命令, 然后去接活儿, 最后结果再回传给 JS。整个过程那叫一个丝滑无比。例 2: 给 传参数JS 这头有数据, 想喂给 处理, 咋整?最为稳妥的方式乃是采用走环境变量, 通过.env() 将变量投递进子进程之中, 然而要借助os. 来承接, 如此这般既具备安全性, 又显得简易, 并且还能实现跨平台。3.js:// 3.js import { $ } from bun; try { const number 7; const output awaitBun执行python代码 - 今日头条py -c print(/py -c print(/py calc.py .env({ NUMBER: String(number) }) .text(); console.log(output); } catch (error) { console.error(出错:, error); }calc.py:import sys import io import os sys.stdout io.TextIOWrapper(sys.stdout.buffer, encodingutf-8) n int(os.environ.get(NUMBER, 0)) print(f输入 {n}, 平方是 {n ** 2})跑一下:bun 3.js输出:输入 7, 平方是 49数据过去, 结果回来, 干净利落。例 3: 接 JSON 返回值算完想回传给 JS?把它致使吐出JSON, Bun在这里一旦接上.json(), 事情便完成了。跨越语言去传递结构化数据就是如此简便。4.js:// 4.js import { $ } from bun; try { const data awaitBun执行python代码 - 今日头条py -c print(/py -c print(/py data.py.json(); console.log(姓名:, data.user.name); console.log(年龄:, data.user.age); } catch (error) { console.error(出错:, error); }data.py:import sys import io import json sys.stdout io.TextIOWrapper(sys.stdout.buffer, encodingutf-8) result {user: {name: 老王, age: 40}} print(json.dumps(result, ensure_asciiFalse))跑一下:bun 4.js输出:姓名: 老王 年龄: 40从前端产出 JSON, 通过 JS 直接拿到对象, 直接使用 data.user.name, 无需进行解析, 极为顺畅。例 4: 错误处理运行出错然后退出, Bun 这个工具会抛出相应情况。退出时所产生的代码, 就是退出码, 而错误信息输送出来那便是错误输出。在进行程序调试的阶段, 这两个方面的内容是最为具有帮助作用的。5.js:// 5.js import { $ } from bun; try { awaitBun执行python代码 - 今日头条py -c print(/py -c print(/py error.py.text(); } catch (error) { console.error(退出码:, error.exitCode); console.error(错误信息:, error.stderr.toString()); }error.py:# error.py import sys sys.stderr.write(出大事了\n) sys.exit(1)跑一下:bun 5.js输出:退出码: 1 错误信息: 出大事了报错信息一清二楚, 排错轻松。编码坑我头回在 上跑, 输出长这样:뾶 5 Բ 78.54啥玩意儿? 全是问号方块。这一查才赫然知晓, 原本是默认GBK编码, 然而输出的却是UTF-8, 如此这般字符集全然对不上, 进而呈现出模糊不清的状况了。修法贼简单, 在 脚本顶上加上这几行:import sys import io sys.stdout io.TextIOWrapper(sys.stdout.buffer, encodingutf-8)硬给套转成 UTF-8 格式, 不管谁来进行调试都不会出现紊乱情况, 这几行内容放置于任何脚本的最开头位置均可正常使用, 在此建议予以收藏。写在最后Bun.$ 这玩意儿, 用起来就一个字: 爽。从前妄图在 JS 内部实施调用行为时, 必须开启相应程序, 精心拼凑指令, 妥善料理流程, 细致剖析输出内容, 经过一连串如此这般的操作, 其过程可谓迅猛如虎般一气呵成。现在? 一个反引号, 完事儿。