它完全不影响它。这只是一个名称,它用于标识编译代码的来源,所以你可以使用你想要的字符串。
像文档说:
编译(源,文件名,模式[,标志[,dont_inherit]])
filename参数应该给从该代码是 读取文件;如果未从文件中读取 ('< string>'通常使用),则传递一些可识别的值。
的情况下
其中source
不是从一个文件(如这里)阅读他们建议您使用<string>
,让你知道这个代码是从一个字符串写入编译。
编写代码的人,在修复一些Bottle Python 2/3 bugs时做了它。所以我猜测,他用<py3fix>
,以此来识别断言从当用户运行2.x的他编译def _raise
有人提出:
>>> eval(compile('def _raise(*a): raise a[0], a[1], a[2]', '<py3fix>', 'exec'))
>>> _raise(Exception, "error message", None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<py3fix>", line 1, in _raise
Exception: error message
>>> eval(compile('def _raise(*a): raise a[0], a[1], a[2]', '<my_source_file>', 'exec'))
>>> _raise(Exception, "error message", None)Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<my_source_file>", line 1, in _raise
Exception: error message
谢谢,很好的答案。它只是像评论一样,对吧? – zhangyangyu
类别。这是关于*来自哪里的评论,所以它不应该太冗长。 –