独家 | 5个只有少数程序员知道的用例

72f91e6df73e5db942af780ecb4877ac.png

作者:Shalitha Suranga

翻译:闫晓雨

校对:赵茹萱

本文约2900字,建议阅读6分钟。

Python不仅能够应用于数据科学和Web后端——还可以做更多的事。

48fa6f15938d4432ae0b89a81bececbe.png

照片由Chris Ried拍摄,使用Canva编辑并发布在Unsplash

Python是一种简单的、对开发人员友好且具有解释性的通用编程语言。Python因其简单的语法、丰富的库生态系统和高效的开发环境而日益流行。程序员使用Python来构建Web后端、实用程序脚本和本机桌面应用程序。如今,Python在科学工程师、数据分析师、机器学习工程师和数据科学家中非常流行。

编程语言在抵达不同的开发者社区时通常会变得更流行。例如,JavaScript因Electron框架而变得更流行,它允许开发人员使用Web前端构建桌面应用程序。Python也尝试通过Python开发者社区中的令人印象深刻的创新打入新的开发者社区。

现在我们可以使用Python来构建类似JavaScript的任何东西。然而,大多数开发人员仍然没有意识到这些优秀的基于Python的创新。在这个故事中,我将讲解几个鲜为人知的Python用例。尝试将Python应用于以下用例,并帮助Python更受欢迎吧。

用Python创建移动应用程序

如今,Dart和JavaScript语言是最受青睐于构建跨平台的移动应用程序。换句话说,Flutter和React Native主导着移动应用开发市场。但是,是否所有Python程序员都必须学习Dart或JavaScript才能编写移动应用程序?不——Kivy GUI框架(https://github.com/kivy/kivy)已经可以为Android和iOS平台生成原生应用程序。

因此,您可以使用Python构建跨平台的移动应用程序。

Kivy自带类似于Flutter的小部件工具包。Kivy使用SDL(Simple DirectMedia Layer)(https://github.com/libsdl-org/SDL)在Android和iOS上渲染2D元素,就像Flutter使用Google Skia(https://github.com/google/skia)一样。Kivy通过Android上的JNI/Cython和iOS上的Objective-C/Cython与原生移动API进行通信。

与其他移动框架一样,Kivy也提供工具链来制作特定于平台的应用程序包。此外,您可以在桌面操作系统上运行Kivy应用程序。Google Play和Apple App Store接受基于Kivy的应用程序(https://github.com/kivy/kivy/wiki/List-of-Kivy-Projects)。如果许多开发者开始使用Kivy构建他们的应用程序,它无疑可与Flutter和React Native争锋。

在浏览器上运行Python

Python解释器通常在操作系统上运行。如何在Web浏览器上运行Python?通常认为,必须在远程服务器上托管Python解释器实例并通过WebSocket协议进行通信。是的——这就是大多数在线Python解释器所做的。但现在,您可以在浏览器上用Pyodide(https://github.com/pyodide/pyodide)单纯从客户端运行任何Python模块。Pyodide通过Emscripten运行CPython的WebAssembly版本。浏览器的WebAssembly实现通常提供类似CPU的虚拟执行环境。

Emscripten WebAssembly编译器也支持虚拟内存文件系统。因此,我们也可以在浏览器上运行Python文件系统API模块。请参阅以下代码片段——它将在浏览器上运行。

console.log(pyodide.runPython(`     
 import os     
 os.makedirs('dir/test')    
  print(os.listdir('dir')) `));

上面的代码将启用Emscripten中的虚拟文件系统实现并打印以下输出。

['test']

现在,您可以直接在Web浏览器上运行Python科学计算代码。Pyodide支持流行的科学计算编程库,例如NumPy、pandas、SciPy、Matplotlib和scikit-learn。Pydiode还提供了一种访问Web API的方法。例如,您可以使用以下Python代码显示浏览器警报。

import js
 js.alert('Hello JavaScript!') # js module refers to window :)

现在,一个Python开发者用Python写React应用,也不过是稀松平常的一件事。

用Python编写Shell脚本

系统管理员通常会为各种系统维护任务编写Bash脚本。开发人员还倾向于使用Shell脚本自动化他们重复且耗时的手动任务——以提高他们的生产力。一些程序员还使用Python编写Shell脚本,因为Bash没有提供我们需要的现代脚本语言的所有语言特性。

但是,您不得不在Python相比于在Bash中写更多的代码才能处理进程。ShellPy(https://github.com/lamerman/shellpy)项目为这个问题提供了一个优秀的解决方案。ShellPy允许您使用Python编写类似Bash的自动化脚本。看下面的例子吧。

#!/usr/bin/env shellpyprint('Hello ShellPy')
`
echo "Hello"
 > test.txt cat test.txt `

正如您已经注意到的,您可以在同一个ShellPy脚本文件中运行Bash命令和Python片段。您可以使用Python处理数据,并且依然使用Bash来生成进程。很棒的是,您可以直接将Bash命令输出到一个Python变量。尝试使用ShellPy用干净简单的Python代码编写您的下一个自动化脚本吧。

构建Pythonic混合桌面应用程序

原生桌面应用程序开发在技术上很棒,但我们必须为每个平台维护单独的代码库。因此,现在开发人员倾向于使用跨平台的应用程序框架和GUI工具包来构建桌面应用程序。像Electron这样的框架提供了一种使用Web前端创建跨平台桌面应用程序的方法。

这些应用程序被称为混合应用程序,因为我们将本机功能嵌入到Web应用程序中。

基于Electron的应用程序通常在后端使用Node.js代码。但是,Python程序员可以通过以下两个项目为Electron应用程序后端编写Python代码:python-gui-electron(https://github.com/keybraker/python-gui-electron)和electron-python-example(https://github.com/fyears/electron-python-example)。

我们都知道,Electron由于嵌入式Chromium和Node.js的开销而经常产生膨胀软件。作为替代方案,您可以使用Eel(https://github.com/ChrisKnott/Eel)框架编写基于Python的混合应用程序,并将它们作为Chrome/Chromium应用运行。Eel使用WebSocket连接在Python和Chrome之间创建了一个通信通道——允许您为应用程序后端编写Python代码。

此外,您可以使用Python后端使用Neutralinojs构建轻量级和可移植的混合桌面应用程序。

用Python以创纪录的速度构建CLI程序

当我们为框架和库制作开发工具时,必须构建CLI应用程序。例如,Flutter团队创建了Flutter CLI来管理和配置Flutter应用程序。我还为我维护的框架创建了一个基于Node的CLI程序(https://github.com/neutralinojs/neutralinojs-cli)。此外,我们可以将我们的自动化脚本转换为CLI程序以增强可用性。例如,您可以在向脚本发送特定命令时触发特定操作或进程。

大多数程序员使用Node.js来构建带有流行的Node模块的CLI程序,例如command.js、ink、oclif和chalk。像commander.js这样的库提供了高效的可链接方法API来更快地构建CLI程序。

Google Open Source的PythonFire(https://github.com/google/python-fire)项目为您提供了一种使用Python开发CLI程序的更高效的方法。PythonFire根据函数定义和参数自动生成CLI结构。此外,您可以使用此库在创纪录的时间内将现有的自动化脚本转换为CLI程序。编写以下代码后:

import fire 


def add(a, b):  return a + b


def sub(a, b):  return a – b


if __name__ == '__main__':   fire.Fire()

您可以使用以下命令调用这两个函数。

./cli.py add 10 5 .
/cli.py sub 5 2

结论

现在,每种编程语言都专注于变得WORA(一次编写,随处运行)。JavaScript覆盖了每个开发者社区,成为排名第一的WORA语言。我在下面的故事中进一步讲解了:

抱歉Java,Write Once Run Anywhere (WORA)现在是JavaScript

Java以该口号启程:一次编写,随处运行。但现在,是JavaScript——不是你,Java。

ebba3ab29850d629827094cbdf35dfd8.png

Python是编程世界中下一个最大的游戏规则改变者。它是一种简单的通用语言,更适合处理数据。现在,Python慢慢进入移动应用和混合应用开发。我们还无法预测哪个会在WORA的角逐中表现更好。2022年,让我们拭目以待!

感谢阅读。

原文标题:

5 Python Use Cases That Only a Few Programmers Know

原文链接:

https://levelup.gitconnected.com/5-python-use-cases-that-only-a-few-programmers-know-35e25ddf13d4

编辑:于腾凯

校对:杨学俊

译者简介

def3809a05a3f61ae6958fb090e43a5f.png

闫晓雨,本科毕业于北京林业大学,即将就读于南加州大学应用生物统计与流行病硕士项目。继续在生统道路上摸爬滚打,热爱数据,期待未来。

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。

点击文末“阅读原文”加入数据派团队~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:datapi),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。

cb09c0bdd0b9fc5aa211b167421b6a01.png

点击“阅读原文”拥抱组织

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值