python我想return一个file里所有的函数名,可是总出错,如图

 我来答
chenpaul914
2013-10-28 · TA获得超过556个赞
知道小有建树答主
回答量:265
采纳率:0%
帮助的人:251万
展开全部
import re
import sys


def function_name(f):
    t = f.read()
    names = re.findall(r"def (.+?)\(", t)
    return names


def main():
    names = None
    if len(sys.argv) > 1:
        with open(sys.argv[1]) as f:
            names = function_name(f)
    else:
        names = function_name(sys.stdin)
    print(names)


main()

用正则表达式就很方便了

这段代码可以从命令行接收一个文件名, 也可以从stdin直接读.

python代码传进去, function名字在一个列表里传出来


顺带提一下, 你的题目说的是这个function接收一个TextIOWrapper, 所以你不应该再open

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
passepartoute
2013-10-28 · TA获得超过376个赞
知道小有建树答主
回答量:289
采纳率:100%
帮助的人:263万
展开全部
函数以冒号结束,不是以")“结束
追问
还是不行啊。。。
追答
endswith(":")
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wanghan519
2013-10-28 · TA获得超过7820个赞
知道小有建树答主
回答量:1285
采纳率:60%
帮助的人:541万
展开全部
如果有lambda咋办,先dir—下,再判断是否callable可能更方便
追问
什么是lambda?刚学python
追答

比如:

a=lambda x:x*2

同样定义了一个函数


你要分析的文件是test.py

import test
for i in dir(test):
    if callable(getattr(test,i)):
        print i

 这样就列出了所有函数

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式