写点什么

Python 中的八个“无代码”特性,这原因我服了

作者:程序媛可鸥
  • 2022 年 3 月 18 日
  • 本文字数:3006 字

    阅读完需:约 10 分钟

近几年 Python 语言之所以流行,是因为我们可以使用它编写更少的代码来实现复杂的功能。Python 开发者社区非常欢迎那些封装了复杂实现但是对使用者十分友好的工具包。


然而,Python 的简便性不止如此。你能相信我们可以在不写任何代码的情况下使用 Python 吗?在接下来的文章中,我会介绍 8 个无需编写任何代码即可使用 Python 内置功能的例子。


0. Python CLI “-m”参数




我们首先从 Python CLI(命令行界面)开始谈起。虽然我们不必编写代码来使用稍后介绍的功能,但是为了让 Python 知道我们要执行的内容,我们需要使用 Python 命令行来进行操作。只要我们的电脑上安装了 Python 环境,我们就可以在 Python 命令行界面输入 python --help 显示所有支持的参数。



由于命令输出的内容太长,上图仅显示了部分内容。这里最想强调的是 -m mod 参数,它会将 Python 模块以脚本的形式运行。因此,如果该模块的实现支持命令行操作,我们就可以在命令行直接使用它。接下来就让我们体验一下:)


1. 服务端口测试




有时候,我们想测试 ip 端口的出站网络流量,通常 telnet 命令是一个不错的选择。在 Windows 平台上默认没有安装 telnet 软件,使用前需要手动安装。如果只是进行简单的测试,未来使用场景也不多,安装它可能是一种资源浪费。但是,如果安装了 Python,那就不必下载安装 telnet,因为 Python 内置了 telnet 对应的模块。我们可以对 Google 搜索网站的 443 端口进行测试。


python -m telnetlib -d 142.250.70.174 443


复制代码



如上图所示,网络流量显示正常,我们甚至收到了来自 Google 空字符的响应。如果我们尝试访问 ip 的随机一个端口,则会抛出错误,如下图所示。


python -m telnetlib -d 142.250.70.174 999


复制代码



2. 本地启动 web 服务




很多 Python 使用者不知道这一点,当第一次听说后会感到惊讶。是的,我们可以使用 Python 启动 web 服务,而无需编写任何代码,只需按如下方式在命令行执行如下命令。


python -m http.server


复制代码



运行后,显示该服务监听了本地的 8000 端口,然后,我们就可以尝试从浏览器进行访问 http://localhost:8000/。



该 web 服务会以根目录的形式展示在命令启动路径下的本地文件系统,换句话说,我们无法访问它的父级目录。


你可能会问,这个功能的使用场景是什么。举一个例子,如果你想跟你的好伙伴们分享你电脑某个目录下的许多文本/PDF/图像文件/子目录文件等,那么使用这个方法就可以非常轻松地进行共享了。



3. 验证及格式化输出 JSON 字符串




如果你有一个非常长且未经格式化的 JSON 字符串,那么阅读起来会非常困难。通常,我会使用一些带有 JSON 插件的文本编辑器,比如 Sublime 或者 VS Code,来格式化 JSON 字符串。但是,如果手头没有这些工具,Python 可以临时一用。比如下面会以这个简短的 JSON 字符串进行展示。


echo '{"name": {"first_name":"Chris", "last_name":"Tao"} "age":33}'


复制代码



可以看到,当前操作系统的命令行工具只能按照原字符串的原始格式进行展示。但是,如果借助 Python 的 json.tool 工具,JSON 字符串就会被很好的格式化。


echo '{"name": {"first_name":"Chris", "last_name":"Tao"} "age":33}' | python -m json.tool


复制代码



Oops!JSON 字符串无效,并且 json.tool 帮助我们定位了问题。 我们在名称对象后面漏掉了一个逗号。 所以添加逗号以使该 JSON 合法有效。


echo '{"name": {"first_name":"Chris", "last_name":"Tao"}, "age":33}' | python -m json.tool


复制代码



现在,JSON 字符串具有了完美缩进的格式化输出! 更加方便阅读。


4. 创建文本编辑器




你没看错,我们可以使用 Python 来”创建”一个文本编辑器。当然,它的功能非常有限,但是如果当前没有更好的选择,使用它会方便很多。另外,功能上肯定无法与 Vim 和 Nanos 相比,但是它完全是基于 UI 编辑器而不是命令行文本形式。这个编辑器由基于 Tkinter 实现的 idlelib 模块创建,所以它是可以跨平台运行的。


假设我们要编写一个简单的 Python 程序来显示当前的时间,我想快速编写代码而不想下载和安装庞大的代码编辑工具。现在让我们运行下面这个命令。


mkdir get_time_app``python -m idlelib get_time_app/print_time.py


复制代码


如果文件目录不存在, idlelib 将无法创建,因此如果必要,我们需要创建一个。我们运行完这个命令之后,print_time.py 只有执行保存的情况下才会创建到本地。现在应该会弹出编辑器,我们可以在里面写一些代码, 可以看到代码是支持语法高亮的。



现在我们使用 ctrl+s 快捷键对编辑好的代码进行保存,并关闭编辑窗口。接下来使用命令行查看一下编辑好的代码文件进行验证,没有任何问题。


cat get_time_app/print_time.py


复制代码



5. 创建可执行应用程序




如果我们想要创建一个简单的应用,比如前面写的获取当前时间的应用程序,我们不必再需要像 PyInstaller 这样的第三方工具包,Python 内置的 Zipapp 就可以做到。假设我们要打包成一个"Get Time"的应用,我们可以在命令行运行下面的命令。


python -m zipapp get_time_app -m "print_time:main"


复制代码


在该命令中,我们只需要给 zipapp 设置 get_time_app 名称,指定 Python 程序的入口文件及其程序入口函数即可。 以 .pyz 为扩展名的文件就是我们创建的应用程序,至此我们就可以将项目作为单个文件而不是文件夹进行分发。



该程序的启动方式也很简单,直接使用 Python 进行调用即可。


python get_time_app.pyz


复制代码



6. 编码和解码字符串或文件




通过 Python CLI,我们可以加密字符串或文件。 我们以有趣的 ROT13 加密算法为例进行展示。ROT13 是一种偏移 13 位的凯撒密码,它的加密原理如下图所示。



我们可以使用 encodings.rot_13 来加密一个字符串,命令如下。


echo "I am Chris" | python -m encodings.rot_13


复制代码



切记,不要将其用于任何真正的加密内容。 因为英文有 26 个字母,所以再次运行这个算法我们可以很容易地破译这个加密字符串:)


如果你也是看准了 Python,想自学 Python,在这里为大家准备了丰厚的免费学习大礼包,带大家一起学习,给大家剖析 Python 兼职、就业行情前景的这些事儿。

一、Python 所有方向的学习路线

Python 所有方向路线就是把 Python 常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。


二、学习软件

工欲善其必先利其器。学习 Python 常用的开发软件都在这里了,给大家节省了很多时间。


三、全套 PDF 电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。


四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。



3c2477.png)


四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。


五、面试资料

我们学习 Python 必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。



成为一个 Python 程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!最后祝你好运!!!

用户头像

Python编程资料加Q群免费领取:419829237 2022.03.14 加入

还未添加个人简介

评论

发布
暂无评论
Python 中的八个“无代码”特性,这原因我服了_Python_程序媛可鸥_InfoQ写作平台