我尝试以与python 2和3兼容的方式使用long
,而不使用任何外部库(例如six
)。
这是重现错误UnboundLocalError: local variable 'long' referenced before assignment
的代码的最小版本:
import sys
def f():
if sys.version_info.major == 3:
long = int
print(long('42'))
f() # error
但是,当我在函数外部使用代码时,它会正确打印出42
:
import sys
if sys.version_info.major == 3:
long = int
print(long('42'))
错误只发生在python 2中(我使用2.7.11)。我想了解为什么会发生这种情况,以及如何在不使用外部库的情况下优雅地修复它。
谢谢!