当前位置: 首页 > 面试题库 >

为什么从__future__ import print_function使用会破坏Python2样式的打印?

封昊天
2023-03-14
问题内容

我是使用python编程的新手,但我尝试使用分隔符并结束打印,但仍给我语法错误。

我正在使用python 2.7。

这是我的代码:

from __future__ import print_function
import sys, os, time

for x in range(0,10):
    print x, sep=' ', end=''
    time.sleep(1)

这是错误:

$ python2 xy.py
  File "xy.py", line 5
    print x, sep=' ', end=''
          ^
SyntaxError: invalid syntax
$

问题答案:

首先,from __future__ import print_function必须是脚本中的第一行代码(除了下面提到的一些例外)。第二,正如其他答案所说,您现在必须print用作函数。这就是重点from __future__ import print_function;将print 功能 从Python 3带入Python 2.6+。

from __future__ import print_function

import sys, os, time

for x in range(0,10):
    print(x, sep=' ', end='')  # No need for sep here, but okay :)
    time.sleep(1)

__future__语句必须位于文件的顶部,因为它们会更改语言的基本内容,因此编译器需要从一开始就了解它们。从文档中:

将来的语句在编译时会得到特别的识别和处理:更改核心结构的语义通常是通过生成不同的代码来实现的。甚至可能是新功能引入了新的不兼容语法(例如新的保留字)的情况,在这种情况下,编译器可能需要以不同的方式解析模块。直到运行时才能推迟此类决策。

该文档还提到,__future__语句之前只能包含模块文档字符串,注释,空白行和其他将来的语句。



 类似资料:
  • 问题内容: 实际上,我已经找到导致问题的原因。我的问题是为什么现在加入到你的断? 原始问题 对我来说,最简单的CSS任务似乎失败了:不保持元素相对于视点的位置。考虑以下样式表: 首次加载页面时,定位正确。但是,视口的任何更改(例如滚动或调整大小)都不会影响元素的位置。可以这么说,它无法使其位置适应新的视口。 足够奇怪的是,该站点显示了如何工作,实际上在我的浏览器中正常工作,没有任何问题! 因此,问

  • 问题内容: 在我的本地路由http:// localhost:9000 /#/ deviceDetail /中, 我有一个控制器来管理该视图。在进入该视图之前,我将一些变量设置为( 例如)。 一旦进入该视图,我就可以访问仪表盘属性,但是例如当我用键刷新页面时,该属性仪表盘就会丢失。 我试图将localSave变量保存,但是该方法遇到了循环引用问题。 有什么技巧可以解决吗? 问题答案: Angula

  • 下面是两张PNG图片: 从视觉上看,它们是完全一样的--唯一的区别是一个在某些像素中有半透明的背景(你可以下载图像来检查)。 但是当我在JavaFX节点上使用这些图像作为图像光标时,我得到了以下结果: 在与问题搏斗了一会之后,我发现了解释这种差异--混合模式的算法: > “预期”的方法(例如,您可以在此浏览器中看到)是取每个通道的值之和,并用alpha值加权:。 “JavaFX游标”给出了不同的公

  • 我注意到一个问题,当从shell脚本循环运行多个adb命令时,大多数命令都不会执行。 这是一个示例脚本。 脚本名称:: 注释掉adb命令的输出 我连接了5台设备。在不使用theadab命令的情况下从bash文件运行时,这是输出。它遍历5个循环中的每一个。 包含ADB命令的循环输出 当取消注释adb shell命令时,它只会正确地迭代第一个循环的行。这是未注释adb命令时的输出: 有人能解释一下这种

  • 这是我的密码: 将按如下方式生成: 都很好。一切都被包装成标签。 现在我需要将这一行添加到上面的代码中: 下面是生成的代码: 但令人惊讶的是,它将被错误地生成: 看到没?元素跳出了标记。我怎么能把所有的东西都放在里面?

  • GCC6有一个新的优化器特性:它假设总是不为空,并基于此进行优化。 值范围传播现在假定C++成员函数的this指针是非空的。这消除了常见的空指针检查,但也破坏了一些不一致的代码基(如Qt-5、Chromium、KDevelop)。作为临时解决办法,可以使用-fno-delete-null-pointer-checks。使用-fsanitize=undefined可以识别错误的代码。 变更文档明确指