当前位置: 首页 > news >正文

python代码编写规范及注意事项

目录

  • 1. 注意
    • 1.1 变量与常量
      • 解释:
      • 建议的修复:
    • 1.2 Too many arguments 和 Too many local variables
      • 解决方案
        • 1. 减少参数数量
        • 2. 减少局部变量数量
        • 3. 调整 Pylint 配置
      • 总结

1. 注意

1.1 变量与常量

解读下面的pylint问题
C0103: Constant name “file_path5” doesn’t conform to UPPER_CASE naming style (invalid-name)

变量:小写如num1
常量:大写如MAX_VALUE、FILE_PATH_5等

Pylint 警告 C0103: 常量名 “file_path5” 不符合 UPPER_CASE 命名风格 (invalid-name) 表示变量 file_path5 不遵循 Python 中常量的命名约定。

解释:

  1. 命名约定:在 Python 中,常量通常使用大写字母表示,并且单词之间用下划线分隔。这是根据 PEP 8(Python 代码的风格指南)广泛接受的约定。例如,一个常量可能被命名为 FILE_PATHMAX_VALUE

  2. 你的变量:名称 file_path5 使用小写字母,混合了字母和数字,这不符合预期的 UPPER_CASE 风格。这可能导致混淆,因为不容易立即看出 file_path5 是一个常量。

建议的修复:

为了解决这个警告,你应该将常量重命名为符合 UPPER_CASE 约定。例如,你可以将 file_path5 更改为 FILE_PATH_5,或者如果数字不是必要的,可以使用 FILE_PATH

以下是你可以更新代码的方式:

FILE_PATH_5 = "/path/to/file"

通过遵循这个约定,你的代码将更具可读性和可维护性,并且符合 Python 社区的标准。

1.2 Too many arguments 和 Too many local variables

def main(df_loc: pd.DataFrame, df_ti: pd.DataFrame, df_ti_matrix: pd.DataFrame, ws_frequency_matrix: pd.DataFrame,df_list: List[str], v50_list: List[float], v50_limit: float = 37.5) -> Dict[str, Union[str, float, List[float], bool]]:

在执行pylint代码格式检查的时候,出现了下面的错误:

terrain_adaptation_cal_ewm.py:638:0: R0913: Too many arguments (7/5) (too-many-arguments)
terrain_adaptation_cal_ewm.py:638:0: R0914: Too many local variables (17/15) (too-many-locals)

分析如下:

在上述的代码中,Pylint 报告了两个错误:

  1. R0913: Too many arguments (7/5) (too-many-arguments)

    • 这个警告表示函数 main 的参数数量超过了 Pylint 设定的默认限制(5 个参数)。在 Python 中,函数参数过多可能使函数变得难以理解和使用,增加了维护的复杂性。
  2. R0914: Too many local variables (17/15) (too-many-locals)

    • 这个警告表示函数 main 中定义的局部变量数量超过了 Pylint 的默认限制(15 个局部变量)。局部变量过多可能会降低代码的可读性和可维护性。

解决方案

为了修复这些警告,可以采用以下几种方法:

1. 减少参数数量
  • 使用数据类或字典:如果函数参数过多,可以考虑将相关参数组合成一个数据类(dataclass)或者字典。例如,可以将 df_locdf_tidf_ti_matrix 组合为一个数据类。
from dataclasses import dataclass
import pandas as pd
from typing import List, Dict, Union@dataclass
class DataFrames:df_loc: pd.DataFramedf_ti: pd.DataFramedf_ti_matrix: pd.DataFramews_frequency_matrix: pd.DataFramedef main(dataframes: DataFrames, df_list: List[str], v50_list: List[float], v50_limit: float = 37.5) -> Dict[str, Union[str, float, List[float], bool]]:# 函数内部逻辑
2. 减少局部变量数量
  • 重构代码:如果函数中局部变量过多,可以考虑将一些逻辑提取到单独的辅助函数中。这样不仅可以减少局部变量的数量,还能提高代码的可读性。
def helper_function(...):# 处理某个特定的逻辑return resultdef main(...):# 使用 helper_function 处理某些逻辑
3. 调整 Pylint 配置

如果你认为你的函数参数和局部变量数量是合理的,并且改变这些结构会导致代码的可读性下降,可以考虑调整 Pylint 的配置文件,增加这些限制的阈值。

.pylintrc 文件中,你可以修改以下设置:

[FORMAT]
# 最大参数数量
max-args=10# 最大局部变量数量
max-locals=20

总结

通过重构代码、使用数据结构组合参数、或者调整 Pylint 的配置,你可以有效地解决这些警告,提高代码的可读性和可维护性。

相关文章:

python代码编写规范及注意事项

目录 1. 注意1.1 变量与常量解释:建议的修复: 1.2 Too many arguments 和 Too many local variables解决方案1. 减少参数数量2. 减少局部变量数量3. 调整 Pylint 配置 总结 1. 注意 1.1 变量与常量 解读下面的pylint问题 C0103: Constant name “file_p…...

【Linux】命令行参数 | 环境变量

🪐🪐🪐欢迎来到程序员餐厅💫💫💫 主厨:邪王真眼 主厨的主页:Chef‘s blog 所属专栏:青果大战linux 总有光环在陨落,总有新星在闪烁 前几天在搞硬件&…...

python 使用进程池并发执行 SQL 语句

这段代码使用了 Python 的 multiprocessing 模块来实现真正的并行处理,绕过 Python 的全局解释器锁(GIL)限制,从而在多核 CPU 上并发执行多个 SQL 语句。 from pyhive import hive import multiprocessing# 建立连接 conn hive.…...

我也谈AI

“随着人工智能技术的不断发展,我们已经看到了它在各行业带来的巨大变革。在医疗行业中,人工智能技术正在被应用于病例诊断、药物研发等方面,为医学研究和临床治疗提供了新的思路和方法;在企业中,人工智能技术可以通过…...

算法妙妙屋-------1.递归的深邃回响:二叉树的奇妙剪枝

大佬们好呀,这一次讲解的是二叉树的深度搜索,大佬们请阅 1.前言 ⼆叉树中的深搜(介绍) 深度优先遍历(DFS,全称为DepthFirstTraversal),是我们树或者图这样的数据结构中常⽤的⼀种…...

编写第一个 Appium 测试脚本:从安装到运行!

前言 最近接到一个测试项目,简单描述一下,需求就是:一端发送指令,另一端接受指令并处理指令。大概看了看有上百条指令,点点点岂不是废了,而且后期迭代,每次都需要点点点,想想就头大…...

mysql查表相关练习

作业要求: 单表练习: 1 . 查询出部门编号为 D2019060011 的所有员工 2 . 所有财务总监的姓名、编号和部门编号。 3 . 找出奖金高于工资的员工。 4 . 找出奖金高于工资 40% 的员工。 5 找出部门编号为 D2019090011 中所有财务总监,和…...

airtest+poco多脚本、多设备批处理运行测试用例自动生成测试报告

一:主要内容 框架功能、框架架构及测试报告效果 airtest安装、环境搭建 框架搭建、框架运行说明 框架源码 二:框架功能及测试报告效果 1. 框架功能: 该框架笔者用来作为公司的项目的前端自动化,支持pc和app,本文…...

Prometheus套装部署到K8S+Dashboard部署详解

1、添加helm源并更新 helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update2、创建namespace kubectl create namespace monitoring 3、安装Prometheus监控套装 helm install prometheus prometheus-community/prome…...

python使用pymysql

为了封装这个数据库操作为一个通用方法,我们可以创建一个函数,该函数接受数据库连接参数(如主机名、用户名、密码、数据库名)、SQL语句以及必要的参数(用于参数化查询)。下面是一个简单的封装示例&#xff…...

Vue3 + TypeScript 组件和文件命名规范及 setup 导入顺序规范

前言 在 Vue3 项目中,合理的文件命名规范和导入顺序不仅有助于提高代码的可读性,还能增强团队协作的效率。特别是在使用 TypeScript 和 Composition API 的项目中,清晰的组件和文件结构尤为重要。本文将详细介绍 Vue3 TypeScript 项目中的组…...

netty之处理连接源码分析

写在前面 在这篇文章看了netty服务是如何启动的,服务启动成功后,也就相当于是迎宾工作都已经准备好了,那么当客人来了怎么招待客人呢?也就是本文要看的处理连接的工作。 1:正文 先启动源码example模块的echoserver&a…...

Dockerfile文件编写

1、打nginx原始包 登录后复制 ROM nginxENV LANG zh_CN.UTF-8 ENV LC_ALL zh_CN.UTF-8 ENV TZ Asia/Singapore# 设置时区,同样保持在一层 RUN ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime && \echo "${TZ}" > /etc/timezoneRUN apt-get …...

Oracle SQL 使用 ROWNUM 分页查询速度太慢的问题及解决方案!

在使用 Oracle 数据库进行数据查询时,分页查询是一种常见的需求。传统上,开发者常常使用 ROWNUM 来实现分页功能。 然而,当数据量较大时,使用 ROWNUM 进行分页查询可能会导致性能问题。本文将深入探讨这一问题的原因,并提供多种解决方案,以提高分页查询的性能。 一、RO…...

Django3 + Vue.js 前后端分离书籍添加项目Web开发实战

文章目录 Django3后端项目创建切换数据库创建Django实战项目App新建Vue.js前端项目 Django3后端项目创建 创建Django项目,采用Pycharm或者命令行创建皆可。此处,以命令行方式作为演示,项目名为django_vue。 django-admin startproject djang…...

楼梯区域分割系统:Web效果惊艳

楼梯区域分割系统源码&数据集分享 [yolov8-seg-FocalModulation&yolov8-seg-GFPN等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Global Al l…...

Day10加一

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 class Solution {public int[] plusOne(int[] di…...

UTF-8简介

UTF-8 UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,也是一种前缀码。它可以用一至四个字节对Unicode字符集中的所有有效编码点进行编码,属于Unicode标准的一部分,最初由肯汤普逊…...

基于Openwrt系统架构,实现应用与驱动的实例。

一、在openwrt系统架构,编写helloworld的应用程序。 第一步先创建目录,项目代码要放在 openwrt根目下的 package 目录中,这里源码写在了 hellworld 的 src 目录下,因为外层还有需要编写的文件。 mkdir -p ~/openwrt/package/hel…...

SQL进阶技巧:如何利用三次指数平滑模型预测商品零售额?

目录 0 问题背景 1 数据准备 2 问题解决 2.1 模型构建 (1)符号规定 (2)基本假设...

HTB:Cicada[WriteUP]

目录 连接至HTB服务器并启动靶机 使用nmap对靶机进行开放端口扫描 使用nmap对靶机开放端口进行脚本、服务信息扫描 首先尝试空密码连接靶机SMB服务 由于不知道账户名,这里我们使用crackmapexec对smb服务进行用户爆破 通过该账户连接至靶机SMB服务器提取敏感信…...

小张求职记四

学校食堂的装修富丽堂皇,像个金碧辉煌的宫殿,可实际上却充斥着廉价的塑料制品和刺鼻的消毒水味。这金玉其外败絮其中的景象,与食堂承包商的“精明算计”如出一辙。 小张和小丽应约来到了一个档口下,“红烧肉”,之前就是…...

适用于 c++ 的 wxWidgets框架源码编译SDK-windows篇

本文章记录了下载wxWidgets源码在windows 11上使用visual Studio 2022编译的全过程,讲的不详细请给我留言,让我知道错误并改进。 本教程是入门级。有更深入的交流可以留言给我。 如今互联网流行现在大家都忘记了这块桌面的开发,我认为桌面应用还是有用武之地,是WEB无法替代…...

flink 内存配置(二):设置TaskManager内存

TaskManager在Flink中运行用户代码。根据需要配置内存使用,可以极大地减少Flink的资源占用,提高作业的稳定性。 注意下面的讲解适用于TaskManager 1.10之后的版本。与JobManager进程的内存模型相比,TaskManager内存组件具有类似但更复杂的结构…...

【C++ 算法进阶】算法提升八

复杂计算 (括号问题相关递归套路 重要) 题目 给定一个字符串str str表示一个公式 公式里面可能有整数 - * / 符号以及左右括号 返回最终计算的结果 题目分析 本题的难点主要在于可能会有很多的括号 而我们直接模拟现实中的算法的话code会难写 要考虑…...

阿里云实时数据仓库HologresFlink

1. 实时数仓Hologres特点 专注实时场景:数据实时写入、实时更新,写入即可见,与Flink原生集成,支持高吞吐、低延时、有模型的实时数仓开发,满足业务洞察实时性需求。 亚秒级交互式分析:支持海量数据亚秒级交…...

生成式语言模型的文本生成评价指标(从传统的基于统计到现在的基于语义)

文本生成评价指标 以 BLEU 为代表的基于统计的文本评价指标基于 BERT 等预训练模型的文本评价指标 1.以 BLEU 为代表的基于统计的文本评价指标 1.BLEU(Bilingual Evaluation Understudy, 双语评估辅助工具) 所有评价指标的鼻祖,核心思想是比较 候选译文 和 参考…...

【网安案例学习】暴力破解攻击(Brute Force Attack)

### 案例与影响 暴力破解攻击在历史上曾导致多次重大安全事件,特别是在用户数据泄露和账户被盗的案例中。随着计算能力的提升和密码管理技术的进步,暴力破解的威胁虽然有所减弱,但仍需警惕,特别是在面对高价值目标时。 【故事一…...

时间序列预测(十八)——实现配置管理和扩展命令行参数解析器

如图,这是一个main,py文件,在此代码中,最开始定义了许多模型参数,为了使项目更加灵活和可扩展,便于根据不同的需求调整参数和配置,可以根据实际需要扩展参数和配置项。 下面是如何实现配置管理和扩展命令行…...

Vue问题汇总解决

作者:fyupeng 技术专栏:☞ https://github.com/fyupeng 项目地址:☞ https://github.com/fyupeng/distributed-blog-system-api 留给读者 我们经常在使用Vue开发遇到一些棘手的问题,解决后通常要进行总结,避免下次重复…...