作者:Shalitha Suranga 翻译:闫晓雨 校对:赵茹萱Python不仅能够应用于数据科学和Web后端——还可以做更多的事。照片由Chris Ried拍摄,使用Canva编辑并发布在Unsplash
Python是一种简单的、对开发人员友好且具有解释性的通用编程语言。Python因其简单的语法、丰富的库生态系统和高效的开发环境而日益流行。程序员使用Python来构建Web后端、实用程序脚本和本机桌面应用程序。如今,Python在科学工程师、数据分析师、机器学习工程师和数据科学家中非常流行。编程语言在抵达不同的开发者社区时通常会变得更流行。例如,JavaScript因Electron框架而变得更流行,它允许开发人员使用Web前端构建桌面应用程序。Python也尝试通过Python开发者社区中的令人印象深刻的创新打入新的开发者社区。现在我们可以使用Python来构建类似JavaScript的任何东西。然而,大多数开发人员仍然没有意识到这些优秀的基于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解释器通常在操作系统上运行。如何在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中的虚拟文件系统实现并打印以下输出。现在,您可以直接在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应用,也不过是稀松平常的一件事。系统管理员通常会为各种系统维护任务编写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代码编写您的下一个自动化脚本吧。原生桌面应用程序开发在技术上很棒,但我们必须为每个平台维护单独的代码库。因此,现在开发人员倾向于使用跨平台的应用程序框架和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构建轻量级和可移植的混合桌面应用程序。当我们为框架和库制作开发工具时,必须构建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)现在是JavaScriptJava以该口号启程:一次编写,随处运行。但现在,是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 公众号;
END
版权声明:本号内容部分来自互联网,转载请注明原文链接和作者,如有侵权或出处有误请和我们联系。
合作请加QQ:365242293
数据分析(ID : ecshujufenxi )互联网科技与数据圈自己的微信,也是WeMedia自媒体联盟成员之一,WeMedia联盟覆盖5000万人群。
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/