为什么在python 3.6.1中使用简单的代码,如:
print(f'\xe4')
结果:
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
print(f'\xe4')
File "<pyshell#13>", line 1, in <lambda>
print = lambda text, end='\n', file=sys.stdout: print(text, end=end, file=file)
File "<pyshell#13>", line 1, in <lambda>
print = lambda text, end='\n', file=sys.stdout: print(text, end=end, file=file)
File "<pyshell#13>", line 1, in <lambda>
print = lambda text, end='\n', file=sys.stdout: print(text, end=end, file=file)
[Previous line repeated 990 more times]
RecursionError: maximum recursion depth exceeded
答案 0 :(得分:4)
因此,让我们来回顾一下:您已使用以下方法覆盖了内置的print
函数:
print = lambda text, end='\n', file=sys.stdout: print(text, end=end, file=file)
与
相同def print(text, end='\n', file=sys.stdout):
print(text, end=end, file=file)
如您所见,此函数以递归方式调用其自身,但没有递归基础,完成时没有条件。您最终得到了无限递归的经典示例。
这与Unicode或格式完全无关。只是不要用内置函数来命名您的函数:
def my_print(text, end='\n', file=sys.stdout):
print(text, end=end, file=file)
my_print('abc') # works
或者至少保留对原始文献的引用:
print_ = print
def print(text, end='\n', file=sys.stdout):
print_(text, end=end, file=file)
print('abc') # works as well
注意:如果函数已被覆盖,则必须运行del print
(或重新启动解释器)以恢复原始的内置函数。
答案 1 :(得分:0)
也为我工作。但也许对您有用:
print(chr(0xe4))