python 3.6.1格式打印unicode

时间:2018-12-15 19:50:35

标签: python

为什么在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

2 个答案:

答案 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))