python笔记30-docstring注释添加变量
前言
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注释添加变量的更多相关文章
- Python基础入门:注释、变量、运算符与数据类型
一.为什么要学习python? python的特点 python作为一门脚本语言,在越来越多的行业和领域发挥着重大作用,比如机器学习.网站开发.数据分析.爬虫.自动化测试. 同时,python具备以下 ...
- devi into python 笔记(二)元组 变量声明 和列表解析
元组tuple: 类似list,只是tuple是不可变的list.类似java的String都是不可改变的.注意:tuple没有方法(有待考证),不可以像list那样那个list.pop 或者list ...
- python笔记:#004#注释
注释 目标 注释的作用 单行注释(行注释) 多行注释(块注释) 01. 注释的作用 使用用自己熟悉的语言,在程序中对某些代码进行标注说明,增强程序的可读性 02. 单行注释(行注释) 以 # 开头,# ...
- python笔记3:注释命名风格
6.注释: 行注释采用 # 开头,多行注释使用三个单引号 (''') 或三个双引号 ("' '"),注释不需要对齐 三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保 ...
- python笔记二(数据类型和变量、编码方式、字符串的编码、字符串的格式化)
一.数据类型 python可以直接处理的数据类型有:整数.浮点数.字符串.布尔值.空值. 整数 浮点数 字符串:双引号内嵌套单引号,可以输出 i'm ok. 也可以用\来实现,\n 换行 \t tab ...
- Python笔记(30)-----logger
转自: https://www.jb51.net/article/139080.htm logging模块介绍 Python的logging模块提供了通用的日志系统,熟练使用logging模块可以方便 ...
- python笔记32-ddt框架优化(生成html报告注释内容传变量)
前言 至于什么是ddt这个可以参考我之前写的博客内容,使用ddt框架的时候,有个问题困扰我很久了,一直没得到解决(也有很大小伙伴问过我,没解决抱歉了!) 这个问题就是:如何使用ddt框架时,生成的ht ...
- python学习第三讲,python基础语法之注释,算数运算符,变量.
目录 python学习第三讲,python基础语法之注释,算数运算符,变量. 一丶python中的基础语法,注释,算数运算符,变量 1.python中的注释 2.python中的运算符. 3.pyth ...
- Python语言——基础01-环境安装、注释、变量
开篇导言: 今天开始进行python学习的笔记更新,以后我都用截图的方式更新,方便不麻烦,界面美观,今天学习更新的python学习内容是环境安装.注释.变量的内容 关注我博客的童鞋从现在开始也可以跟着 ...
随机推荐
- 参数化SQL语句
避免SQL注入的方法有两种:一是所有的SQL语句都存放在存储过程中,这样不但可以避免SQL注入,还能提高一些性能,并且存储过程可以由专门的数据库管理员(DBA)编写和集中管理,不过这种做法有时候针对相 ...
- USACO 6.5 Closed Fences
Closed Fences A closed fence in the plane is a set of non-crossing, connected line segments with N c ...
- Loadrunner参数化如何在记事本中将参数值显示超过100个参数值
Loadrunner参数化如何在记事本中将参数值显示超过100个参数值 1.loadrunner的参数值没有最大的限度, 可以修改C:\Program Files\HP\LoadRunner\conf ...
- UESTC - 594 我要长高
他们oj挂掉啦, 我先保存一下代码... 直接dp复杂度, n * 100 * 100, 我们可以将前一个人的信息丢进单调队列中去,可以优化成n * 100; #include<bits/std ...
- Django实战(18):提交订单
前面的内容已经基本上涵盖了Django开发的主要方面,我们从需求和界面设计出发,创建模型和修改模型,并通过scaffold作为开发的起点:在scaffold的基础上重新定制模板,并且通过Model类和 ...
- Django实战(8):对比RoR与Django的输入校验机制
rails有一个”简洁.完美的验证机制,无比强大的表达式和验证框架“.在<Agile Web Development with Rails 4th>一书的7.1节向我们展示了如何验证Pro ...
- Two-stage rotation animation is deprecated. This application should use the smoother single-stage an
问题出在rootViewController同时包含UITabBarController和UINavigationController. 几经尝试,最后发现,在设置为window.rootViewCo ...
- Cobbler图文详解安装及遇到的问题说明
一.介绍 Cobbler是一个使用Python开发的开源项目,通过将部署系统所涉及的所有服务集中在一起,来提供一个全自动批量快速建立linux系统的网络环境, Cobbler提供了DHCP管理,YUM ...
- 2018用IDEA搭建SSM框架(Spring+SpringMVC+Mybatis)
使用IDEA搭建ssm框架 环境 工具:IDEA 2018.1 jdk版本:jdk1.8.0_171 Maven版本:apache-maven-3.5.3 Tomcat版本:apache-tomcat ...
- 我们不能把JavaScript作为一个全功能的编程语言。它缺乏以下重要特征
客户端JavaScript不允许读或写文件.这已被保存的安全原因. JavaScript不能用于网络的应用,因为没有这样的支持. JavaScript没有任何多线程或多处理器的能力.