【问题标题】:Commenting out lines of python code as part of a function注释掉 Python 代码行作为函数的一部分
【发布时间】:2021-10-11 20:13:49
【问题描述】:

假设我用 Python 编写了一个函数,但我希望能够选择注释掉(即使不可编译)其代码行的任何数量/组合作为函数的一部分。有没有一种有效的方法来做到这一点?所以希望比为每一行代码编写某种“if/else”更有效,因为我必须这样做 200 次。因此 Function(vars,[1,4,5,66,86]) 的输入意味着第 1,4,5,66 和 86 行无法编译。

【问题讨论】:

  • 我猜你说的是元编程?
  • 我猜是这样,但我对此一无所知:-)
  • 您似乎想即时修改解释代码。也许模块ast 可以帮助你。但对于 Python 新手来说,这是一个雄心勃勃的项目。
  • 为什么您期望注释掉任意行集的结果是可编译的代码,可以做任何有意义的事情?如果你碰巧注释掉了,例如,def 声明引入了一个函数,但没有注释掉任何函数体?另外,您希望通过这样做解决什么问题
  • 如果你的函数有 86 行,那么你可能在一个函数中放了太多代码。也许您应该将其拆分为较小的功能,然后使用if/else 仅运行其中一些功能。

标签: python function comments


【解决方案1】:

假设你的函数如下

def printing():
    print("first")
    print("second")
    print("third")

它保存在文件“modify_me.py”中。然后您可以执行以下操作

def modify_it(filename, skips):
    newfunc = ""
    with open(filename, "r") as f:
        for i,line in enumerate(f):
            if i not in skips:
                newfunc += line
    return newfunc

newfunc = modify_it("modify_me.py", [1,3]) #skip lines 1 and 3
exec(newfunc)
printing() #will only print "second"

这并不像看起来那么简单,因为如果您希望所有这些都发生在一个函数中,就必须处理命名空间,但这绝对是一种可行的方法。

【讨论】:

    猜你喜欢
    • 2017-02-28
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 2017-11-04
    • 1970-01-01
    相关资源
    最近更新 更多