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

问题解决|Python 代码的组织形式与编码规范

一、Python中组织形式

(一)组织形式(函数,类,模块,包,库)概览

(1)概览

组织形式描述特点或用途例子
函数一段具有特定功能的代码块,可以接受参数并返回结果。

- 封装性

- 可重用性

- 易于测试

def add(a, b): return a + b
定义了一组具有相同属性和方法的对象的模板。

- 封装性

- 继承性

- 多态性

class Car: def __init__(self, model): self.model = model
模块包含Python代码的文件,可以定义函数、类和变量。

- 组织代码

- 重用性

-命名空间隔离

math.py 包含数学运算相关的函数
包含多个模块的集合,通常用于组织大型项目。

- 组织大型项目

- 命名空间管理

- 可分发性

numpy 包,包含多个科学计算相关的模块
一组可重用的模块或包,为特定领域提供功能。

- 功能性

- 可扩展性

- 通常作为第三方库使用

Pillow 图像处理库,提供图像操作功能

        这些组织形式在Python中是相互关联的,它们共同构成了Python编程的基础架构。函数和类是代码的基本构建块,模块是将这些构建块组织成文件的方式,包是将多个模块组织成更大的单元,而库则是提供特定功能的代码集合。

        这些例子展示了不同组织形式在实际Python编程中的应用。例如,add 函数是一个简单的函数,用于执行加法操作;Car 类是一个简单的类定义,可以用于创建汽车对象;math.py 是Python标准库中的一个模块,提供了一系列数学函数;numpy 是一个广泛使用的科学计算包,包含了大量的模块;Pillow 是一个第三方图像处理库,提供了丰富的图像操作功能。

(2)Python中不同组织形式的安装、导入和使用方法

组织形式安装方法(如果适用)导入方法使用方法
函数不适用在模块中定义后直接使用或通过from module import function调用函数:function(arguments)
不适用在模块中定义后直接使用或通过from module import Class创建实例:instance = Class(arguments)
模块使用pip install module_name或下载源码后使用python setup.py install使用import module_namefrom module_name import function_or_class调用模块中的函数或类:module_name.function(arguments)function_or_class.arguments
通常作为模块的一部分,安装方法同模块使用import package_namefrom package_name import module_or_class使用包中的模块或类:package_name.module_name.function(arguments)module_or_class.arguments
使用pip install library_name或下载源码后使用python setup.py install使用import library_namefrom library_name import module_or_class使用库中的模块或类:library_name.module_or_class.arguments

  说明:

  • 安装:对于模块和包,如果它们是第三方的,通常可以通过pip(Python的包安装器)来安装。库通常指一组相关的模块或包,其安装方法也通过pip或源码安装。
  • 导入:导入是使用模块、包或库中的代码的第一步。可以使用import语句来导入整个模块或包,或者使用from ... import ...来从模块或包中导入特定的函数、类等。
  • 使用:使用指的是调用模块中的函数或创建类的实例。模块中的函数可以直接调用,而类的实例需要先创建。

      以下是对Python中组织形式的层次化和更丰富的描述,以及它们之间的关系和用途:

(二) 函数(Function)

1) 定义:

一段具有特定功能的代码块,可以接收输入(参数),执行操作,并返回输出(结果)。
2)特点:
  - 封装性:将代码逻辑封装在函数内部,避免重复。
  - 可重用性:可以在不同的上下文中重复调用。
  - 易于测试:可以独立于其他代码进行测试。
3)构造函数:

在Python中,构造函数是`__init__`方法,用于初始化新创建的对象的状态。
4)例子:

`def greet(name): print("Hello, " + name)`

(三)类(Class)

1) 定义

含有函数的代码块,用于描述具有相同属性和方法的对象集合。
2) 特点
  - 封装性:将数据和操作这些数据的方法组合在一起。
  - 继承性:可以创建基于现有类的子类,扩展或修改行为。
  - 多态性:允许使用统一的接口来使用不同类型的对象。
3) 构造函数:

`__init__`方法,用于在创建对象时初始化其属性。
4)例子:

`class Animal: def __init__(self, name): self.name = name`

(四)模块(Module)

1) 定义:

物理形式表现为一个`.py`文件,是Python中的基本代码组织单元。
2) 特点:
  - 组织代码:将相关的函数和类组织在一起。
  - 重用性:模块可以被其他脚本导入和使用。
  - 命名空间隔离:避免命名冲突。
3) 用途:

模块化设计使得代码更加清晰、易于维护。
4)例子:

`math.py`模块提供了数学运算相关的函数。

(五) 包(Package)

1) 定义:

物理形式表现为包含多个`.py`文件的目录,且必须包含一个`__init__.py`文件。
2)特点:
  - 组织大型项目:通过包来组织大型项目中的多个模块。
  - 命名空间管理:通过包的结构来管理命名空间。
  - 可分发性:包可以被安装和分发。
3) 用途:

包是Python项目中用于组织多个相关模块的标准方式。
4)例子:

`numpy`是一个提供多维数组和矩阵运算的科学计算包。

(六) 库(Library)

1)定义:

一组解决特定问题的模块或包的集合,通常作为第三方库使用。
2)特点:
  - 功能性:提供特定领域的功能和工具。
  - 可扩展性:可以根据需要添加更多的模块或功能。
  - 通常作为第三方库使用:可以被不同的项目导入和使用。
3)用途:

库是Python生态系统中的重要组成部分,提供了广泛的功能支持。
4) 例子:

`Pillow`是一个图像处理库,提供了图像文件的读取、处理和写入功能。

        这些组织形式在Python中形成了一个层次化的结构,从单个函数到整个库,它们共同支持了代码的组织、重用和扩展。通过这种层次化的方式,开发者可以更有效地构建和管理复杂的软件项目。

二、Python 代码的编码规范

通用PEP8 规范链接: 官方链接、中文翻译

可参照链接:python3代码编程规范(命名、空格、注释、代码布局、编程建议等)-CSDN博客

(一)命名规范

  • 包名和模块名:简短全小写,可选下划线分隔。
  • 类名:首字母大写的驼峰式(CapWords),如CheckFunc
  • 函数名:小写单词,下划线分隔,如check_func
  • 变量名:贴近意义,避免使用ijklOI
  • 常量:全部大写,下划线分隔,注释说明,如TOTAL = 10
  • 异常名:类命名方式,如ErrorInvalidArgument

(二)表达式和语句中的空格

  • 二元运算符:两边使用空格,如i = i + 1
  • 关键字参数或默认参数值:等号两边使用空格,如def complex(real, imag=0.0)

(三)注释

  • 文档字符串:使用三引号,提供函数或方法的描述和用法。
  • 函数或方法注释:说明函数或方法的作用、参数和返回值。
  • 其他建议:添加文件描述、作者、时间和文件名等信息。

(四)代码布局

  • 缩进:使用4个空格进行缩进。
  • 行的最大长度:限制为79个字符。
  • 空行
    • 类与类之间前后用两个空行隔开。
    • 类中函数与函数之间前后用一个空行隔开。
    • 函数中使用空行区分逻辑段。
  • 导入
    • 按标准库、第三方库、本地库分组。
    • 每组之间用空行分隔。
    • 避免在同一行导入多个模块。

(五)Python编程建议

  • 异常处理
    • 使用try...except...else结构,如try...except KeyError...else...
  • 返回结果处理:保持返回结果的一致性。
  • True、False的判断:直接使用布尔值,避免使用== Trueis True进行比较。

相关文章:

问题解决|Python 代码的组织形式与编码规范

一、Python中组织形式 (一)组织形式(函数,类,模块,包,库)概览 (1)概览 组织形式描述特点或用途例子函数一段具有特定功能的代码块,可以接受参数…...

Flask项目搭建及部署 —— Python

flask搭建及部署 pip 19.2.3 python 3.7.5 Flask 1.1.1 Flask-SQLAlchemy 2.4.1 Pika 1.1.0 Redis 3.3.11 flask-wtf 0.14.2 1、创建flask项目: 创建完成后整个项目结构树: app.py: 项⽬管理⽂件,通过它管理项⽬。 static: 存放静态…...

【C++报错已解决】Invalid Use of ‘this’ Pointer

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 引言 一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:修正‘this’指针使用2…...

群晖NAS配置WebDav服务结合内网穿透实现跨平台云同步思源笔记

文章目录 前言1. 开启群晖WebDav 服务2. 本地局域网IP同步测试3. 群晖安装Cpolar4. 配置远程同步地址5. 笔记远程同步测试6. 固定公网地址7. 配置固定远程同步地址 前言 本教程主要分享如何将思源笔记、cpolar内网穿透和群晖WebDav三者相结合,实现思源笔记的云同步…...

内容监管与自由表达:Facebook的平衡之道

在当今数字化信息社会中,社交媒体平台不仅是人们交流和获取信息的主要渠道,也是自由表达的重要舞台。Facebook,作为全球最大的社交网络平台,连接了数十亿用户,形成了一个丰富多样的信息生态。然而,如何在维…...

电脑桌面日历记事本怎么弄 好用的桌面日历记事本

在这个数字化的时代,电脑已成为我们日常生活中不可或缺的伙伴。我常常在电脑上记录各种事项,以便随时查看和提醒自己。而我最钟爱的记事方式,莫过于使用桌面日历记事本。 想象一下,你的电脑桌面上有一个直观的日历,每…...

#招聘数据分析#2024年6月前程无忧招聘北上广深成渝对比情况

#招聘数据分析#2024年6月前程无忧招聘北上广深成渝对比情况 0、根据前程无忧不完全样本统计,北上广深成都重庆平均月工资从高到低依次为 北京15441元、上海14425元、深圳13310元、广州11192元、成都10539元、重庆10290。 1、成都招聘样本数全量35228个&#xff0c…...

STM32 IIC详解(软件模拟)

目录 一、IIC协议基本原理 1.IIC协议概述 2.时序图分析 二、代码分析 1.IIC初始化 2.IIC起始信号 3.IIC发送数据 4.获取应答信号 5.读一个字节 6.产生ACK应答 7.不产生ACK应答 IIC(Inter-Integrated Circuit)在嵌入式系统中是一种常见的数据通…...

推三返一小程序商城开发搭建

推三返一小程序商城开发主要涉及到以下几个步骤: 确定需求和功能: 首先需要明确小程序商城的开发需求和功能。商家需要思考自己想要实现什么功能,例如推广、销售、裂变等。 同时还需要考虑小程序的页面设计、用户体验等方面。 选择合适的开…...

项目机会:4万平:智能仓,AGV,穿梭车,AMR,WMS,提升机,机器人……

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 如下为近期国内智能仓储物流相关项目的公开信息线索,这些项目具体信息会发布到知识星球,请感兴趣的球友先人一步到知识星球【智能仓储物流技术研习社】自行下载…...

[工具类]Java 合并、拆分PPT幻灯片

本文将介绍在Java程序中如何来合并及拆分PPT文档的方法。示例大纲: 1. 合并 1.1 将指定幻灯片合并到文档 1.2 合并多个幻灯片文档为一个文档 2. 拆分 2.1 按幻灯片每一页单独拆分为一个文档 2.2 按指定幻灯片页数范围来拆分为多个文档 使用工具:F…...

深入了解 Timber:全面掌握 Android 日志记录的最佳实践

深入了解 Timber:全面掌握 Android 日志记录的最佳实践 Timber 是由 Jake Wharton 提供的一个流行的 Android 日志记录库。它旨在简化日志记录、增强日志管理,并提高代码的可维护性。在本文中,我们将深入探讨 Timber 的功能、使用方法以及最…...

阿一课代表随堂分享:红队反向代理之使用frp搭建反向代理

frp反向代理 frp简介 frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。 frp 是一个可用于内网穿透的高性能的反向代理应用,分为服务端frps和客户端frpc,支持 tcp, udp, http, https 协议。详…...

基于vue的引入登录界面

以下是一些常见的登录页面布局: 1. 中心布局 - 登录表单位于页面的中心位置,通常包括用户名输入框、密码输入框、登录按钮等元素。页面背景简洁,以突出登录表单。 - 这种布局常见于大多数网站和应用,简洁明了,用户注意…...

centos7升级到欧拉openeule

centos7升级到欧拉openeule 一、准备工作 1、安装迁移工具(安装迁移工具的机器不能给自己升级,请用其他机器作为迁移母机) wget https://repo.oepkgs.net/openEuler/rpm/openEuler-20.03-LTS-SP1/contrib/x2openEuler/x86_64/Packages/x2…...

阿里云 Ubuntu 开启允许 ssh 密码方式登录

以前用的 centos,重置系统为 ubuntu 后在ssh 远程连接时遇到了点问题: 在阿里云控制台重置实例密码后无法使用密码进行 SSH 连接登录 原因:阿里云 Ubuntu 默认禁用密码登录方式 解决办法: 先使用其他用户登录到服务器 这里进来…...

利用投标相似度辅助围串标判定

摘要 围标(bid rigging)是一种非法的竞争行为,对市场公平性和公共资源分配造成严重影响。本文探讨了如何利用投标相似度来辅助判定围标行为。通过详细分析投标文件的内容相似性,选取适当的指标进行相似度计算,并结合实…...

iOS 开发者的 Flutter 入门课

作为一名 iOS 开发者,入门 Flutter 需要了解一些新的工具和概念,但也能利用你已有的知识和技能。以下是一个详细的入门指南,帮助你快速上手 Flutter: 1. 环境设置 首先,你需要设置开发环境。 安装 Flutter SDK 前往…...

单机版k8s搭建

环境配置: 关闭防火墙和交换内存 systemctl stop ufwsudo swapoff -a安装Docker 更新安装包 sudo apt-get update安装依赖 sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates获取证书 curl -fsSL http://mirrors.a…...

IDEA创建Spring项目无法使用Java8的解决方案

文章目录 一,创建Project,无法选择Java81,无法选择Java82,选择JDK17报错 二,原因分析1,Spring Boot将来会全力支持Java17,不再维护支持Java8的版本 三,解决方案1,使用国内…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...