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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM