首页 > 解决方案 > 获取不包括文档字符串的python函数源?

问题描述

您可能希望文档字符串不影响哈希,例如在 joblib 内存中。

有没有剥离文档字符串的好方法?inspect.getsource 和 inspect.getdoc 有点互相争斗:文档字符串被“清理”为一体。

标签: python

解决方案


如果您只想散列函数的主体,无论文档字符串如何,都可以使用该function.__code__属性。

它允许访问code不受文档字符串影响的对象。

不幸的是,使用它,您将无法获得源代码的可读版本

def foo():
    """Prints 'foo'"""
    print('foo')


print(foo.__doc__)  # Prints 'foo'
print(foo.__code__.co_code)  # b't\x00d\x01\x83\x01\x01\x00d\x02S\x00'
foo.__doc__ += 'pouet'
print(foo.__doc__)  # Prints 'foo'pouet
print(foo.__code__.co_code)  # b't\x00d\x01\x83\x01\x01\x00d\x02S\x00'

推荐阅读