7.11.1.future 语句¶

future 语句 是一种针对编译器的指令,指明某个特定模块应当使用在特定的未来某个 Python 发行版中成为标准特性的语法或语义。

future 语句的目的是使得向在语言中引入了不兼容改变的 Python 未来版本的迁移更为容易。 它允许基于每个模块在某种新特性成为标准之前的发行版中使用该特性。

future_stmt ::= "from" "__future__" "import" feature ["as" identifier]

("," feature ["as" identifier])*

| "from" "__future__" "import" "(" feature ["as" identifier]

("," feature ["as" identifier])* [","] ")"

feature ::= identifier

future 语句必须在靠近模块开头的位置出现。 可以出现在 future 语句之前行只有:

模块的文档字符串(如果存在),

注释,

空行,以及

其他 future 语句。

在 Python 3.7 中唯一需要使用 future 语句的特性是 标注。

future 语句所启用的所有历史特性仍然为 Python 3 所认可。 其中包括 absolute_import, division, generators, generator_stop, unicode_literals, print_function, nested_scopes 和 with_statement。 它们都已成为冗余项,因为它们总是为已启用状态,保留它们只是为了向后兼容。

future 语句在编译时会被识别并做特殊对待:对核心构造语义的改变常常是通过生成不同的代码来实现。 新的特性甚至可能会引入新的不兼容语法(例如新的保留字),在这种情况下编译器可能需要以不同的方式来解析模块。 这样的决定不能推迟到运行时方才作出。

对于任何给定的发布版本,编译器要知道哪些特性名称已被定义,如果某个 future 语句包含未知的特性则会引发编译时错误。

直接运行时的语义与任何 import 语句相同:存在一个后文将详细说明的标准模块 __future__,它会在执行 future 语句时以通常的方式被导入。

相应的运行时语义取决于 future 语句所启用的指定特性。

请注意以下语句没有任何特别之处:

import __future__ [as name]

这并非 future 语句;它只是一条没有特殊语义或语法限制的普通 import 语句。

在默认情况下,通过对Code compiled by calls to the 内置函数 exec() 和 compile() 的调用所编译的代码如果出现于一个包含有 future 语句的模块 M 之中,就会使用 future 语句所关联的语法和语义。 此行为可以通过 compile() 的可选参数加以控制 --- 请参阅该函数的文档以了解详情。

在交互式解释器提示符中键入的 future 语句将在解释器会话此后的交互中有效。 如果一个解释器的启动使用了 -i 选项启动,并传入了一个脚本名称来执行,且该脚本包含 future 语句,它将在交互式会话开始执行脚本之后保持有效。

参见

PEP 236 - 回到 __future__有关 __future__ 机制的最初提议。

python简单语句-7. 简单语句相关推荐

  1. python条件语句-Python中条件判断语句的简单使用方法

    最简单的条件语句: if expression: expr_true_suite 如上,if是关键字,expression是条件表达式,条件表达式支持多重条件判断,可以用布尔操作符and.or和not ...

  2. python中多重if语句用法_python-循环语句的简单条件语句、多重条件语句和嵌套条件语句编写...

    1. 简单if-else语句 例1:要求用户输入两个数,计算两数的和.如果这两个数的和大于100,则输出"两数和大于100",否则输出"两数和小于100". 程 ...

  3. 怎么用PHP语句做出增改删查功能,mysql语句实现简单的增、删、改、查操作示例...

    本文实例讲述了mysql语句实现简单的增.删.改.查操作.分享给大家供大家参考,具体如下: 1.创建db_shop数据库,如果该数据库不存在则创建 createdatabaseifnotexistsd ...

  4. php 登陆 sql语句,PHP 连接MySQL数据库的SQL语句的简单示例

    这篇文章主要为大家详细介绍了PHP 连接MySQL数据库的SQL语句的简单示例,具有一定的参考价值,可以用来参考一下. 首先用phpmyadmin进入建立数据库user 再建个三段的表admin 再别 ...

  5. for语句与if语句嵌套的简单应用

    1.循环语句 for(初始条件:循环条件:状态改变) { 循环体 } break为跳出循环,continue为结束此次循环. 2.死循环常用while语句 while(判断语句) { if(判断) { ...

  6. sql简单带索引的语句_SQL Server 2017:栏目索引和简单计划

    sql简单带索引的语句 Some time ago, SQL Server 2017 was released and issued as CTP. The most exciting release ...

  7. mysql查询语句ppt_mysql简单查询.ppt

    简单查询 回顾 数据完整性和完整性分类 NOT NULL约束 DEFAULT 约束 PRIMARY KEY约束 CHECK 约束 UNIQUE 约束 FOREIGN KEY约束 教学目标 掌握最基本的 ...

  8. switch 语句的简单使用

    switch 语句 switch简单使用的场景 一般都是处于分支结构中,当题目中需要进行多次分支时,并且借助if 语句使用复杂时, 那么这种情况可以考虑一下switch语句 对于某一些问题switch ...

  9. C++/PTA 2017final英文语句格式简单检查

    2017final英文语句格式简单检查 题目要求 解题思路 代码 getline函数 cstring头文件 总结 题目要求 英文书写中,句首字母通常为大写,其余为小写,单词"I"除 ...

  10. C语言详解系列——goto语句的讲解和循环语句的简单练习题

    文章目录 goto语句 一些简单的练习题 打印三的倍数 从大到小输入 打印素数 最大公约数 打印闰年 goto语句 顾名思义goto语句就是去到任何我们想去的语句,当我们写了很长的一段代码时,我们想要 ...

最新文章

  1. ArrayMap java.lang.ArrayIndexOutOfBoundsException
  2. G.Fast应用将开启 中国光进铜退没白干
  3. ubuntu安裝opencv3.4.1
  4. Extension field添加到CDS view上的技术实现
  5. Map以自定义类做为键值
  6. pyculiarity解决报错ValueError: data must be a 2 column data.frame, with thefirst column...
  7. 计算机ip地址无法修改密码,手提电脑怎么修改无线网络的IP地址|无线网络怎么修改密码...
  8. mybatis多表查询出来的实体如何映射_mybatis进阶案例之多表查询
  9. 经典机器学习系列(四)【神经网络详解】
  10. Unity3D自动寻路之Nav Mesh Agent(导航网格代理)
  11. mac安装homebrew失败的处理方法
  12. 7款家用智能摄像头横评:小米、乐橙、TP-LINK、海康威视、360、智汀、华为
  13. 导向滤波-Guided Image Filtering
  14. 微信php开发包,TP5专用微信sdk使用教程
  15. sun 公司的java 认证
  16. Oracle EBS R12 - Application patch可不可以reapply
  17. 嵌入式开发学习(5)S5PV210开发板刷系统那点破事儿之一
  18. 【廖雪峰】写一个验证Email地址的正则表达式
  19. iTop-4412_开发板Linux编程之TFTP服务器学习笔记
  20. 研发效能怎么分析?方法论、模型、误区都在这里了

热门文章

  1. 中国五大顶级域名7月第一周增3.2万 美国减7.3万
  2. Alcatel 6850实现静态路由
  3. Flutter 入门指北(Part 13)之网络
  4. Flutter学习之认知基础组件
  5. CentOS 使用 Docker 安装 Sentry
  6. 数据产品通用复合指标查询计算的实践
  7. [STL][C++]STACK QUEUE
  8. 2. 动态分配字符串
  9. Target runtime Apache Tomcat v6.0 is not defined.错误解决方法
  10. 在虚拟机中安装LINUX