读取python文件中的所有函数及函数描述

  • 在写代码的时候经常需要导入其他文件中的函数,或是需要观察某个python文件中所有函数的注释。但是网上找了下没有找到这样的程序,于是决定自己写一个。
  • 示例程序如下,把该程序命名为 test.py
from my_function import func0, func1

def func2():
    """ Discription: Call function 1
    Args:
        xx
    Returns:
        xx
    """
    func1()
    pass

def func3():
     """ Discription: Do something
    Args:
        xx
    Returns:
        xx
    """
    print("Hello worlld")

def main():
    func0()
    func2()
    func3()

  • 以上述程序为例,读取出这个程序里面所有的函数,以及函数的注释(Discription),输出结果如下
——test.py中所有的函数列表
Function List:
    func2()  # Discription: Call function 1
    func3()  # Discription: Do something
    main()  # 
——从test.py中导入函数
from test import func2, func3, main
  • 实现的代码
# -*- coding: utf-8 -*-
"""
Discription: 用于读取 .py 文件中的所有函数
Note:
    如果函数有注释(Discription),那么需要在三个引号后加一个空格才能识别,否则此程序可能会报错
"""
path = "test.py"
func_lists = []
func_note_lists = []
func_lists_noparam = []
with open(path, encoding='utf-8') as f:
    line = f.readline()
    while line:
        if "def " in line:
            k1, v1 = line.split(':', 1)  # 去除冒号之后的备注
            func_i = k1[4:]
            func_lists.append(func_i)  # 去除 "def"
            # 只读取函数,不包含参数
            klist = func_i.split("(")  # 防止函数的参数中有括号
            k2 = klist[0]
            func_lists_noparam.append(k2)
            line_next = f.readline()
            # 读取备注
            if '"""' in line_next:
                m, note = line_next.split('" ', 1)
                func_note_lists.append(note[:-1])
            else:
                func_note_lists.append("")
            #print(k[4:])
        line = f.readline()

# 输出函数列表 + 函数描述
print("\nFunction List:")
for i in range(len(func_lists)):
    print("    " + func_lists[i] + "  # " + func_note_lists[i])

## 输出函数导入列表
str_import = ""
for i in range(len(func_lists_noparam)):
    str_import = str_import + func_lists_noparam[i] + ", "
print("\nfrom " + path[:-3] + " import " + str_import[:-2])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值