我观察到__future__
模块print_function
在 Python 3.2 中的奇怪行为。
以这段代码为例:
from __future__ import print_function
import sys
print('Enter the base path of the images: ', end='')
path = sys.stdin.readline().strip().strip('"')
if len(path) == 0:
print("No path entered")
else:
print(root)
print("\n\nPress ENTER to exit")
exit = sys.stdin.readline()
ENTER当脚本运行时,控制台会在显示第一print
条语句之前等待用户按下。
然后输出如下所示:
输入图像的基本路径:未输入路径 按 ENTER 退出
不用说,向用户显示一个空提示会导致很多混乱,尤其是因为很多人害怕带有白色文本的黑色窗口(命令提示符)。
当代码更改为此
from __future__ import print_function
import sys
print('\nEnter the base path of the images: ', end='') #line now starts with \n
path = sys.stdin.readline().strip().strip('"')
if len(path) == 0:
print("No path entered")
else:
print(path)
print("\n\nPress ENTER to exit")
exit = sys.stdin.readline()
然后输出如预期的那样(假设我们忽略前面的空行):
输入图像的基本路径:c:\ C:\ 按 ENTER 退出
然而,当代码在 python 2.6 中运行时,第一个代码按预期工作(即它在等待接收输入Enter the base path of the images:
之前显示)。
这让我问:
为什么我需要在print
函数前面加上 a才能在 Python 3.2 中显示输出,而在 Python 2.6 中运行时\n
不需要?
难道这两个版本的实现方式不同吗?\n
print_function