前言

python里面添加字符串注释非常简单,如何将变量放入 python 的函数注释里面呢?

docstring也就是给代码加注释的内容了,python可以给函数,类、方法,模块添加注释内容,注释标准格式一般是三个双引号,如:"""美程序员枪击4同事,竟因代码不写注释?"""

docstring

先看一个简单案例,在函数里面添加注释内容,函数下方三个双引号里面就可以写该函数的注释文档了,如果需要调用此函数的注释内容

# coding:utf-8

def yoyo():
"""函数功能:打印hello world!"""
print("hello world!") a = yoyo.__doc__
print(a)

运行结果:函数功能:打印hello world!

类、方法和模块也能添加注释内容

# coding:utf-8

"""
这个是该模块的注释内容:hello.py
""" class Hello():
"""hello类,实现xx功能""" def world(self):
"""world方法,打印world"""
print("world") a = __doc__ # 获取模块的docstring内容
print(a) b = Hello.__doc__ # 获取类的docstring内容
print(b) c = Hello.world.__doc__ # 获取方法的docstring内容
print(c)

运行结果

这个是该模块的注释内容:hello.py

hello类,实现xx功能
world方法,打印world

如果函数里面带有参数,也能给参数添加注释

一个标准的函数注释应该包含着几个部分:

  • 函数实现功能、
  • 参数说明(需传的参数是什么意思,参数类型)
  • 函数返回值,没return 默认为None
def login(user, psw):
"""
登录函数-连着输入三个双引号后回车,自动出来格式
:param user: 用户名,str
:param psw: 密码, str
:return: resut是登录结果, True or False
"""
print(user)
print(psw)
resut = "登录结果"
return resut print(login.__doc__)

运行结果

    登录函数-连着输入三个双引号后回车,自动出来格式
:param user: 用户名,str
:param psw: 密码, str
:return: resut是登录结果, True or False

docstring添加变量

在docstring里面添加变量内容,变量的部分用%s代替,最后取值的时候,前面加一行代码

用变量替换里面的%s部分

# coding:utf-8

c = "这里是变量内容"

def hello():
"""添加的注释部分,%s"""
print("hello world!") hello.__doc__ %= c # 先用变量c替换里面的%s部分
a = hello.__doc__
print(a)

运行结果:

添加的注释部分,这里是变量内容

还有一种写法,可以先不在函数里面加内容,直接给函数.__doc__赋值

# coding:utf-8

c = "这里是变量内容"

def hello():
print("hello world!") # 用hello.__doc__方法添加注释内容
hello.__doc__ = """添加的注释部分,%s"""%c
a = hello.__doc__
print(a)

运行结果:添加的注释部分,这里是变量内容

使用装饰器decorator

上面的方法虽然能实现添加变量注释,但是不太优雅,接下来可以封装一个函数,使用装饰器来把变量传入进去

# coding:utf-8

def docstring_parameter(*sub):
"""写一个可以添加变量注释的装饰器"""
def dec(obj):
obj.__doc__ = obj.__doc__.format(*sub)
return obj
return dec # 案例1-添加一个参数
@docstring_parameter("打印hello world")
def hello():
""" 实现功能:{0}"""
print("hello world!") a = hello.__doc__
print(a) # 案例2-添加2个参数 @docstring_parameter("打印hello", "打印world")
def world():
""" 实现功能:{0}, {1}"""
print("hello world!") b = world.__doc__
print(b)

运行结果:

实现功能:打印hello world

实现功能:打印hello, 打印world

参考文档:https://ask.helplib.com/python-2.7/post_1277206

python自动化交流 QQ群:779429633

python笔记30-docstring注释添加变量的更多相关文章

  1. Python基础入门:注释、变量、运算符与数据类型

    一.为什么要学习python? python的特点 python作为一门脚本语言,在越来越多的行业和领域发挥着重大作用,比如机器学习.网站开发.数据分析.爬虫.自动化测试. 同时,python具备以下 ...

  2. devi into python 笔记(二)元组 变量声明 和列表解析

    元组tuple: 类似list,只是tuple是不可变的list.类似java的String都是不可改变的.注意:tuple没有方法(有待考证),不可以像list那样那个list.pop 或者list ...

  3. python笔记:#004#注释

    注释 目标 注释的作用 单行注释(行注释) 多行注释(块注释) 01. 注释的作用 使用用自己熟悉的语言,在程序中对某些代码进行标注说明,增强程序的可读性 02. 单行注释(行注释) 以 # 开头,# ...

  4. python笔记3:注释命名风格

    6.注释: 行注释采用  # 开头,多行注释使用三个单引号 (''') 或三个双引号 ("' '"),注释不需要对齐 三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保 ...

  5. python笔记二(数据类型和变量、编码方式、字符串的编码、字符串的格式化)

    一.数据类型 python可以直接处理的数据类型有:整数.浮点数.字符串.布尔值.空值. 整数 浮点数 字符串:双引号内嵌套单引号,可以输出 i'm ok. 也可以用\来实现,\n 换行 \t tab ...

  6. Python笔记(30)-----logger

    转自: https://www.jb51.net/article/139080.htm logging模块介绍 Python的logging模块提供了通用的日志系统,熟练使用logging模块可以方便 ...

  7. python笔记32-ddt框架优化(生成html报告注释内容传变量)

    前言 至于什么是ddt这个可以参考我之前写的博客内容,使用ddt框架的时候,有个问题困扰我很久了,一直没得到解决(也有很大小伙伴问过我,没解决抱歉了!) 这个问题就是:如何使用ddt框架时,生成的ht ...

  8. python学习第三讲,python基础语法之注释,算数运算符,变量.

    目录 python学习第三讲,python基础语法之注释,算数运算符,变量. 一丶python中的基础语法,注释,算数运算符,变量 1.python中的注释 2.python中的运算符. 3.pyth ...

  9. Python语言——基础01-环境安装、注释、变量

    开篇导言: 今天开始进行python学习的笔记更新,以后我都用截图的方式更新,方便不麻烦,界面美观,今天学习更新的python学习内容是环境安装.注释.变量的内容 关注我博客的童鞋从现在开始也可以跟着 ...

随机推荐

  1. more命令 less命令

    more命令是一个基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作.more名单中内置了若干快捷键,常用的有H(获得帮助信息),Enter(向下翻滚一行), ...

  2. 一行代码实现Okhttp,Retrofit,Glide下载上传进度监听

    https://mp.weixin.qq.com/s/bopDUFMB7EiK-MhLc3KDXQ essyan 鸿洋 2017-06-29 本文作者 本文由jessyan投稿. jessyan的博客 ...

  3. 【LOJ】#2026. 「JLOI / SHOI2016」成绩比较

    题解 用\(f[i][j]\)表示考虑了前i个排名有j个人被碾压 \(f[i][j] = f[i - 1][k] \* C[k][j] \* C[N - k - 1][N - r[i] - j] \* ...

  4. 操作数据----DML语句

    insert语句基本语法 insert into table(column) values(values); insert into dept (deptno,dname,loc) ,'develop ...

  5. Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException

    org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean ...

  6. Unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match

    最近在用python做数据挖掘,在聚类的时候遇到了一个非常恶心的问题.话不多说,直接上代码: from sklearn.cluster import KMeans from sklearn.decom ...

  7. ARM 内核

    ARM相关知识: ARM核:A8,ARM11,ARM9 指令架构:ARMv7,ARMv6,ARMv4 ARM核分为两个阵营: 经典型:ARM7,ARM9,ARM11 Cortex: Cortex A: ...

  8. django中缓存配置

    # ======缓存配置====== CACHES = { ## 虚拟缓存,开发调试版本,此为开始调试用,实际内部不做任何操作 # 'default': { # 'BACKEND': 'django. ...

  9. bzoj4974 字符串大师 KMP

    明显的,有$next[i] = i - pre[i]$ 根据$next[i]$构造比根据$pre[i]$简单 如果$next[i] \neq 0$,那么我们可以直接取前面的结果 否则,我们可以暴力的寻 ...

  10. [Luogu5162]WD与积木(多项式求逆)

    不要以为用上Stirling数就一定离正解更近,FFT都是从DP式本身出发的. 设f[i]为i个积木的所有方案的层数总和,g[i]为i个积木的方案数,则答案为$\frac{f[i]}{g[i]}$ 转 ...