前言

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. WebAssembly 介绍

    http://blog.csdn.net/zhangzq86/article/details/61195685 WebAssembly 的出现是不是意味着 Javascript 要完? https:/ ...

  2. Java之反转排序

    顾名思义,反转排序就是以相反的顺序把原来的数组内容重新进行排序.反转排序算法在我们的程序开发中也是经常用到的.而反转排序的基本思想也很简单,就是把数组最后一个元素与第一个元素进行交换,倒数第二个与第二 ...

  3. 饼图tooltip

    @{ ViewBag.Title = "pie"; } <h2>pie</h2> <div id="main" style=&qu ...

  4. 将C++ IplImage 图像用C#读取

    如何将C++ IplImage 图像用C#读取  ? 将opencv 的C++程序做成 dll 动态链接库 用C#调用 当然这里需要安装emgucv  ,也可以自己实现这个类. 下面我把实现贴出来给大 ...

  5. Request常用方法(转)

    原文地址:http://www.lihuai.net/program/python/1617.html Python Requests库:HTTP for Humans 时间: 2014/12/30 ...

  6. 《Android源码设计模式》--享元模式

    No1: 享元模式是对象池的一种实现.享元模式用来尽可能减少内存使用量,它适合用于可能存在大量重复对象的场景,来缓存可共享的对象,达到对象共享.避免创建过多对象的效果,这样一来就可以提升性能.避免内存 ...

  7. OpenStack Keystone V3 简介

    Keystone V3 简介 Keystone 中主要涉及到如下几个概念:User.Tenant.Role.Token.下面对这几个概念进行简要说明. User:顾名思义就是使用服务的用户,可以是人. ...

  8. 用于兼容浏览器的js写法

    用于引用的源文件代码: var Common = { getEvent: function() {//ie/ff if (document.all) { return window.event; } ...

  9. BZOJ 2959: 长跑 lct 双联通分量 并查集 splay

    http://www.lydsy.com/JudgeOnline/problem.php?id=2959 用两个并查集维护双联通分量的编号和合并. #include<iostream> # ...

  10. Codeforces Round #361 (Div. 2) D. Friends and Subsequences 二分

    D. Friends and Subsequences 题目连接: http://www.codeforces.com/contest/689/problem/D Description Mike a ...