Python冷知识-优雅的文档属性

news2024/11/15 5:52:53

Python是一门学习成本低但是使用场景广泛的语言,0基础2周左右就可以进行简单的脚本编写,但也正是因为这个原因,导致很多小伙伴的Python代码比较粗糙,那么我们来聊聊使用文档属性让Python代码更加的优雅。

设置文档属性

作为一名程序员,无论写什么代码,注释都是一个好的习惯,良好的注释不但对协作的小伙伴有好处,对捋清楚开发思路和代码维护都是有很大帮助的,有没有小伙伴在一周之后再看自己的代码发现有点陌生....,但是不写注释并不会导致程序中断,所以,不写注释这件事他合法但是不道德。

Python本身是支持注释的,单行注释使用'#'号,多行注释使用三引号,这个很基础,除此之外,Python还提供了内置的文档属性__doc__来支持对于项目,脚本,功能的注释,并且通过内置的help方法可以进行文档属性的读取。我们来看一个案例:

1、设置一个目录,如下:

抛开功能,在当前项目的每一个文件对象的第一行添加字符串,就是文档字符串,比如:

(1) 对包文件添加

在包(目录)的__init__.py文件首行添加字符串就是当前包的文档属性值

utils/__init__.py

""" Python
utils 包负责这个项目所有公共的功能,包含
mt - 数据计算功能
"""
复制代码

(2) 对文件添加 在python文件首行添加字符串就是当前文件的文档属性值

utils/mt.py

"""
mt 实现了对项目数据计算的功能,包含了
fun1
class1
"""
复制代码

(3) 读类和函数添加

在类或者函数的语句块首位添加字符串,就是这个类或者函数的文档属性值

utils/mt.py

def fun1(num):
    """
    实现对num加密功能,使用方法:
    fun(num)
    num参数必须是一个字符串
    """
    pass

class Mt:
    """
    当前类会创建一个Mt对象,对象当中包含了
    mt.change 格式转换功能
    mt.set 队列元素存储功能
    mt.get 队列元素获取功能
    """
    def change(self,t):
        """
        格式转换功能,根据传入的t转换mt的格式
        返回新格式的mt
        """

    def set(self,k,v):
        """
        设置mt元素
        :param k: 元素键,可以使用字符串,数字
        :param v: 元素的值
        :return: 返回mt对象
        """

    def get(self,k):
        """
        获取mt的元素
        :param k: 元素键
        :return: 返回元素的值
        """
复制代码

使用文档属性

那么写好这些文档属性之后,怎么使用呢?两种方法:

1、直接调用__doc__属性

import utils
from utils import mt
print(utils.__doc__)
print(mt.__doc__)
复制代码

2、使用help命令,可以把这个方法完整的文档属性展示出来

from utils.mt import Mt

help(Mt)
复制代码

Python的文档属性不会影响代码的执行,但是对于代码的可读性和可维护性都有很大的帮助,所以还是很有必要写的,最后希望所有的小伙伴都会遇到写注释的小伙伴一起快乐的编程,还请各位大佬多多指点啊。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/129669.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JUC并发编程学习笔记(二)Lock接口及线程间通信

2 Lock 接口 2.1 Synchronized 2.1.1 Synchronized 关键字回顾 synchronized 是 Java 中的关键字,是一种同步锁。它修饰的对象有以下几种: 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码&…

软件测试中白盒测试的优缺点是什么?

白盒测试的优缺点白盒测试在计算机领域行业用以检查程序的状态,确定实际运行状态与预期状态是否一致,来看看白盒测试的优点和缺点是什么吧。 白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符…

Android学习进阶——Dagger 2 使用及原理

概述 Dagger 2 是 Google 开源的一款依赖注入框架,它的前身是 square 的 Dagger 1,Dagger 2 在 Android 中有着较为广泛的应用。 Dagger 2 基于 Java 注解,采用 annotationProcessor(注解处理器) 在项目编译时动态生…

AS-REPRoasting

讲在前面: 最近笔者发布的几篇文章,大家不难发现,都是和kerberos协议相关的。国内外各类的研究员对于该协议的研究愈发的深入,从该协议产生的漏洞就会越来越多甚至越来越严重。当然这只是笔者的一点拙见。 在介绍了Kerberoastin…

21天Java开发速成篇-Java从入门到大师01快速入门

Java 简介 win10安装 JDK 下载和安装 访问 oracle 官网https://www.oracle.com/ 建议下载解压版,下载完毕后,解压到一个没有中文和空格的目录即可 配置 Path 你可以选择一个喜欢的目录,我的解压目录是 d 盘根目录下,如图所示 其中 b…

创邻Galaxybase入选 2022 爱分析《中国数据智能最佳实践案例》

随着2022年进入收官时间,创邻科技喜报频传。近日,“2022爱分析中国数据智能最佳实践案例”评选结果出炉,经过申报、初评、调研、终评等多轮角逐,创邻科技凭借“中国民生银行万象知识图谱应用平台”成功获评2022中国数据智能最佳实…

FPGA知识汇集-FPGA时序基础理论

对于系统设计工程师来说,时序问题在设计中是至关重要的,尤其是随着时钟频率的提高,留给数据传输的有效读写窗口越来越小,要想在很短的时间限制里,让数据信号从驱动端完整地传送到接收端,就必须进行精确的时…

Kubernetes:minikube操作总结

Kubernetes:minikube操作总结minikube statusminikube nodeminikube status 查询集群状态 $ minikube statusminikube node 新增节点 注意:minikube 仅仅是基于本地 standalone 部署一款简易 k8s 集群,因此添加节点,也仅仅是本…

【多尺度条形池化与通道注意力的图像语义分割】论文精讲

论文:论文链接 出处:中国图象图形学报 目录 1.摘要 2.网络结构 2. 1 改进的条形池化技术 2.2 二阶通道注意力机制 3.结果 1.摘要 目的 针对自然场景下图像语义分割易受物体自身形状多样性、距离和光照等因素影响的问题,本文提出 一种新的基于条形池…

windows搭建gitblit服务器

使用Gitblit搭建属于局域网的Git服务器,方便程序代码的联合开发及程序代码版本管理。 环境:1、Windows 64位操作系统。 2、jdk1.8.0(需要java环境,已安装请忽略) 3、Git-2.24.1.2-64-bit(git工具&#x…

linux系统编程:暂停函数pause

pause函数 该函数功能主要是暂停进程,它的返回值总是-1。 使用方式: (1)首先使用signal函数提前注册一个中断函数,该函数用于将函数指针和信号做一个绑定; (2)当程序进行执行pause&#xff0…

【Bp2Lua】深入理解蓝图

【Bp2Lua】深入理解蓝图 做 Bp2Lua 过程中的副产物,蓝图在连连看背后隐含的操作 有几点想说明的 蓝图会隐含一些操作,前端节点图是看不出来的,但是后端字节码会一览无余Bp2Lua 本质是 字节码 ToLua,其实 Bp2Lua 根本不关心也不…

策略模式(strategy pattern)

背景 一、一个具体实现范例的逐步重构 补血道具(药品):a) 补血丹:补充200点生命值;b) 大还丹:补充300点生命值;c) 守护丹:补充500点生命值将Fighter,F_Warrior,F_Mage 单独写在一个文件中。 Fighter.h …

一步一步学爬虫(4)数据存储之文本存储

一步一步学爬虫(4)数据存储之文本存储4.1 TXT纯文本文件存储4.1.1 本节目标4.1.2 基本实例4.1.3 打开方式4.1.4 简化写法4.1 TXT纯文本文件存储 将数据保存到 TXT 文本的操作非常简单,而且 TXT 文本几乎兼容任何平台,但是这有个缺…

Spark环境搭建(Hadoop YARN模式)

前言 按照前面环境部署中所学习的,如果我们想要一个稳定的生产Spark环境,那么最优的选择就是构建:HA StandAlone集 群。 不过在企业中, 服务器的资源总是紧张的,许多企业不管做什么业务,都基本上会有Hadoo…

AD软件绘制不规则焊盘的器件封装

网上有很多关于AD软件绘制不规则焊盘的帖子,搜了一些帖子看了一下,感觉不太对。严格意义上AD软件是不能绘制不规则的焊盘的,至少目前用的AD软件不支持。为什么这么说呢? 我提一个需求:假如我在PCB文件中需要随意的添加…

企业选择SOP作业指导书系统的目的和意义

SOP是将作业指导流程予以说明规范,让作业人员有一个标准的作业准则,以达到作业的标准一致性。也是一种管理模式,通过对过程的标准化操作,减少和预防差错和不良后果的发生。通过动作的解析、比较、分析,循环作业分析等输…

MIT6.830-2022-lab4实验思路详细讲解

目录前言一、实验概览Exercise 1:Granting LocksExercise 2:Lock LifetimeExercise 3:Implementing NO STEALExercise 4:TransactionsExercise 5:Deadlocks and Aborts总结 && Debug记录前言 到lab4事务,这一块应该是数据库中概念比较多&#x…

2022/12/30总结

今日学习了二叉树有关知识。 二叉树 二叉树通俗来讲就是一个有俩个指针的链表。他们大多长这个样子: 这里还有俩个概念了,二叉树分为完全二叉树和满二叉树 上面所说的是满二叉树,顾名思义就是每个父节点都相应的有俩个指针,通常…

基于springboot+Vue的宿舍管理系统前后端分离(程序+详细文档+数据库)

大家好✌!我是CZ淡陌。一名专注以理论为基础实战为主的技术博主,将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路…