它完全不影響它。這只是一個名稱,它用於標識編譯代碼的來源,所以你可以使用你想要的字符串。
像文檔說:
編譯(源,文件名,模式[,標誌[,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
類別。這是關於*來自哪裏的評論,所以它不應該太冗長。 –