需要找到Python中print或printf的源代码

6
我正在处理一些我不能完全谈论的事情。我只能说我是一个信息安全和计算机科学学生。
我只需要改变Python内部某个深层的东西的源代码。目前,我特别想更改内置的print函数中的源代码。不幸的是,我找不到它在Python源代码文件中的定义。
有什么想法吗?
非常感谢。
编辑:具体来说,问题意在询问是否可以用其他内容覆盖Python中的print函数。这旨在在Python解释器中植入后门。

1
如果没有更多关于你想要实现什么的信息,就不可能提供有意义的答案。例如,如果你想要更改print的行为,你可能只是想替换sys.stdout - Chris Morgan
1
我在寻找有关打印Unicode字符串的更多信息时发现了这个问题。答案对我很有帮助。谢谢! 此外,我认为标题可以改为“需要更改...”而不是“需要查找...”。 - yucer
1个回答

14
在cpython中,print 函数是用C而不是Python实现的。您可以在此处找到源代码,但您必须重新编译cpython才能使更改生效。
要查看Python实现的print 的实现,请查看pypy的版本

1
谢谢phihag。这正是我的计划。我想重新编译它以使其工作。两个问题 -
  1. 我能否对Python执行相同的操作,而不是cpython?
  2. 是否有人能够使用inspect模块或其他方式阅读它的源代码?
- p0lAris
1
哦!刚刚了解到这个。非常感谢。[惊艳我吧!] - p0lAris
1
听起来你不确定如何实现你的目标。请详细说明你的问题和你想要实现的目标。重新编译Python几乎肯定不是你需要做的或者最好的实现方式。 - Chris Morgan
2
@omniDETH,我认为大家指出的问题是你坚持需要重新编译Python,并且这是你正在做的事情的正确方式,但与此同时,你需要以非常隐秘的方式进入SO,因为你无法从公共存储库中找到一些相关代码...我希望它能够奏效,但我想我们永远不会知道 ;) - Jon Clements
1
请记住,在Python 2中,除非您从__future__导入了print_function,否则print不是一个函数。只有在这种情况下和Python 3中,您才能覆盖__builtins__.print。但是,如果您这样做,您会发现其他人也可以覆盖它。就像sys.stdout一样。 - Chris Morgan
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接