【问题标题】:Automatic detection of indented blocks for Python code自动检测 Python 代码的缩进块
【发布时间】:2018-04-26 21:55:34
【问题描述】:

这在 Java 中相当容易,因为开始和结束该代码块需要花括号,因此我可以编写一个程序来查找花括号并标记每个函数。

我在使用 Python 时遇到的问题是找到某种标记来告诉我函数何时结束。我猜一种解决方案是找出一些方案来检测每行的 '\t'。判断一个功能块的开始和结束的方法有哪些?

【问题讨论】:

  • 你已经在自己的问题中给出了答案......那你为什么要问?
  • 你是问计算python源代码中的行数,还是问在运行时获取函数的行数,即def linecount(function): return line_count_of_function

标签: python counting lines-of-code


【解决方案1】:

空白通常比制表符更受欢迎,而且混合绝对是不可接受的。无论如何,函数也可以在其他函数和类中定义,因此您的 q 可能会更微妙一些。

(顺便说一句,虽然在 REPL 中,一个空行将结束一个 def,但通常情况并非如此。)

您也许可以利用检查模块

In [1]: import inspect

In [2]: def h():
    ...:     a =9
    ...:     b =8
    ...:     return a+b
    ...: 

In [3]: inspect.getsourcelines(h)
Out[3]: ([u'def h():\n', u'    a =9 \n', u'    b =8\n', u'    return a+b\n'], 1)

In [4]: inspect.getsourcelines(h)[0]
Out[4]: [u'def h():\n', u'    a =9\n', u'    b =8\n', u'    return a+b\n']

In [4]: len(inspect.getsourcelines(h)[0])
Out[4]: 4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    • 1970-01-01
    • 2011-04-26
    相关资源
    最近更新 更多