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

数据派THU

共 4896字,需浏览 10分钟

 ·

2022-02-15 20:03

作者:Shalitha Suranga

翻译:闫晓雨

校对:赵茹萱


本文约2900字,建议阅读6分钟。
Python不仅能够应用于数据科学和Web后端——还可以做更多的事。

照片由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。
 


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


编辑:于腾凯
校对:杨学俊



译者简介




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

翻译组招募信息

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

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

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


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



转载须知

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

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




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


浏览 68
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报