【问题标题】:Is it possible to print a function as a string in Python? [duplicate]是否可以在 Python 中将函数打印为字符串? [复制]
【发布时间】:2012-08-12 20:39:08
【问题描述】:

可能重复:
Can Python print a function definition?

在 Javascript 中,可以将函数的代码打印为字符串吗?

Javascript 示例:

function thisFunctionPrintsItself(){
    return thisFunctionPrintsItself.toString();
}

是否可以在 Python 中做同样的事情?

【问题讨论】:

  • @olly_uk 我已经在 J​​avascript 中尝试过,但在 Python 中没有。

标签: javascript python


【解决方案1】:

你可以这样做,但结果没有用,因为所有内容都先编译为字节码。

def printItself():
    print repr(printItself.func_code.co_code)

您也可以使用dis 模块进行反汇编,但结果并不保证可移植。

def disassembleItself():
    print __import__('dis').dis(disassembleItself)

【讨论】:

  • 这是我得到的第一个函数输出:'t\x00\x00t\x01\x00j\x02\x00j\x03\x00\x83\x01\x00GHd\x00\x00S'跨度>
  • @Anderson - 确切地说,它已编译为字节码。
  • 是否可以像在 Javascript 中那样实际打印函数的源代码?
  • 等待...另一个答案解释了这一点。 :)
  • 在某些情况下是可能的,但前提是源可用。此外,如果在运行时更改了定义,它也不会起作用。
【解决方案2】:
def foo ():
    import inspect
    return inspect.getsource(foo)

print (foo())

在这里,inspect 模块读取源文件,因此如果它们丢失(并且仅使用 .pyc.pyo 模块)或函数是即时编译的,它将无法工作, 在交互式解释器或其他方式中。

【讨论】:

  • 是否可以写一个函数,可以将另一个函数作为参数,然后打印函数的源代码?
  • 这正是inspect.getsource 所做的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-01
  • 2015-09-21
  • 2021-09-28
  • 2022-07-12
  • 2014-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多