如何让自己的 python 代码更有逼格?

1 简介

在日常编写Python代码的过程中,由于个人经验及编程习惯上的差异,有些人写出的代码可读性很高,一眼看上去就非常整洁易懂,而有些人写出的代码则十分“潦草随意”,读起来颇为费劲。

想要写出格式工整、可读性强的Python代码,除了需要在编写大量代码的过程中逐渐养成良好习惯外,还可以结合代码格式化工具实现代码的自动格式美化,经典的Python代码格式化工具有autopep8blackyapf等,均可在vscodepycharm等主流ide中安装相关插件进行快捷使用。

而去年大火的代码静态分析工具ruff,主要功能中也包含了代码格式化功能,由于其底层基于rust编写,因此执行相关功能时的运算速度超快,据官方称可达到其他同类型工具的10~100倍之多⚡,今天的文章中,费老师我就将为大家介绍基于ruff的代码格式化常用功能 。

2 使用ruff进行Python代码格式化

2.1 ruff的安装

在主流的ide中,我们可以直接安装ruff相关插件,以vscode为例,在拓展中搜索ruff进行安装即可:

2.2 ruff代码格式化常用功能

2.2.1 直接使用

默认条件下,安装完ruff插件后,在vscode中就可以直接使用快捷键shift+alt+f,针对当前编辑中的py文件进行格式美化,举个例子,假设我们原始的Python代码格式“一不小心”写成了下面的 样子:

import os
# 提取目标路径下各文件的创建时间及最近修改时间
target_path ="target_path"
# 需要排除的文件拓展名
ignore_file_types =['.mp4','.avi', '.rmvb' 
                   ]
# 结果元组格式:(文件名,创建时间,最近修改时间)
files=[(file,os.path.getctime(os.path.join(target_path,file)),os.path.getmtime(
    os.path.join(target_path,file) )) for file in os.listdir(target_path)
# 判断当前文件名是否为文件,且不在排除拓展名列表中
if os.path.isfile(os.path.join(target_path, file)) and 
not any(file.endswith(ext) for ext in ignore_file_types
                                                               )]

在按下快捷键shift+alt+f后,心情顿时舒畅了~

动图封面

2.2.2 配置格式化规则

ruff默认的格式化规则基本上兼容black,但如果你想要「自定义」调整部分的格式化规则,譬如在引号的使用上,你更倾向于使用单引号,在ruff中也可以很轻松的实现。

ruff中推荐以具体的「项目」为控制范围,通过在「项目根目录」中创建pyproject.tomlruff.toml来编写具体的规则,譬如在下面的示例ruff.toml文件中,我们声明了优先使用单引号:

❝ruff.toml
[format]
# 使用单引号
quote-style = "single"

格式化结果中就会对应的优先使用单引号:

动图封面

或是限制每行最多字符数量:

❝ruff.toml
# 限制每行最多20个字符
line-length = 20

[format]
# 使用单引号
quote-style = "single"

动图封面

设置缩进使用单个Tab符(默认为4个空格):

❝ruff.toml
[format]
# 使用单引号
quote-style = "single"
# 缩进使用单个tab
indent-style = "tab"

动图封面

ruff还支持对docstring注释中的代码片段进行识别并格式化:

❝ruff.toml
[format]
# 使用单引号
quote-style = "single"
# 启用docstring代码片段格式化
docstring-code-format = true

动图封面

更多有关ruff代码格式化功能的细节,请移步https://docs.astral.sh/ruff/formatter/了解更多。

### 使用Python生成高级美观的词云图 #### 准备工作 为了创建高质量的词云图,需先安装必要的库。主要依赖于`wordcloud`库来进行词云绘制,并借助`matplotlib`用于显示图像。 可以通过pip命令轻松安装这些包: ```bash pip install wordcloud matplotlib ``` #### 导入所需模块并加载文本数据 在开始之前,要导入所需的Python库,并准备一段待处理的文字材料作为输入。 ```python from wordcloud import WordCloud, STOPWORDS import matplotlib.pyplot as plt import numpy as np from PIL import Image ``` #### 创建基础词云对象 初始化WordCloud类的一个实例,可以在此处配置一些基本属性如宽度、高度、背景色等。 ```python # 设置词云样式参数 wc = WordCloud(width=800, height=400, background_color='white', stopwords=set(STOPWORDS), min_font_size=10).generate(text) # text为预处理后的字符串形式的数据集[^1] ``` #### 自定义形状与颜色映射 利用mask参数可使词云呈现特定轮廓;而colormap则允许改配色方案以适应不同场景需求。 ```python # 加载图片模板 mask = np.array(Image.open("path_to_mask_image.png")) # 构建带有自定义外观的词云 custom_wd = WordCloud(mask=mask, contour_width=3, contour_color='firebrick').generate(text) plt.figure(figsize=(8, 4)) plt.imshow(custom_wd, interpolation="bilinear") plt.axis('off') plt.show() ``` #### 调整词汇频率权重及去除常见无意义词语(停用词) 对于某些应用场景来说,可能希望突出显示重要的关键词汇或是完全排除掉那些频繁出现却没有太多价值的信息片段。 ```python stopwords = set(STOPWORDS) new_stopwords = {"said", "one"} # 添加额外不需要展示的单词到停止列表里 stopwords.update(new_stopwords) weighted_text = ' '.join([f"{w} {freq}" for w, freq in frequencies.items()]) # 假设frequencies是一个字典,键是单词,值是对应的权值[^2] final_wc = WordCloud(stopwords=stopwords).generate(weighted_text) plt.figure(figsize=(8, 4)) plt.imshow(final_wc, interpolation='bilinear') plt.axis("off") plt.show() ``` 上述代码展示了如何基于给定资料构建加复杂且视觉上吸引人的词云图表。通过适当调整各个选项,能够满足多样化的业务和技术要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@Python大数据分析

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值