文件名称:中的变化-编译系统透视++图解编译原理_
文件大小:9.16MB
文件格式:PDF
更新时间:2024-06-29 19:45:45
Python 学习手册 中文 高清文字版
Python 3.0中的变化 包中的导入操作的工作方式在Python 3.0中略有变化。这种变化只适用于我们本章中已 经学习过的包目录中的文件中的导入;其他文件中的导入像以前一样工作。对于包中的导 入,Python 3.0引入了两个变化: 它修改了模块导入搜索路径语义,以默认地跳过包自己的目录。导入只是检查搜索路径的其他组件。这叫做“绝 对”导入。 它扩展了from语句的语法,以允许显式地要求导入只搜索包的目录。这叫做“相对”导入语法。 这些变化在Python 3.0中完全展示了出来。新的from语句相对语法在Python 3.0中也可 以使用,但是,默认的搜索路径的变化必须作为一个选项打开。它目前计划添加到Python 2.7的发布中[1],这一变化以这种方式纳入,是因为搜索路径部分不能和早期的Python向后 兼容。 这一变化的影响是,在Python 3.0中,我们通常必须使用特殊的from语法来导入与导入 者位于同一包中的模块,除非你从一个包根目录拼出一个完整的路径。没有这一语法,你的 包不会自动搜索到。 相对导入基础知识 在Python 3.0和Python 2.6中,from语句现在可以使用前面的点号(“.”)来指定,它们需要 位于同一包中的模块(所谓的包相对导入),而不是位于模块导入搜索路径上某处的模块 (叫做绝对导入)。也就是说: 在Python 3.0和Python 2.6中,我们可以使用from语句前面的点号来表示,导入应该相对于外围的包——这样的导入 将只是在包的内部搜索,并且不会搜索位于导入搜索路径(sys.path)上某处的同名模块。直接效果是包模块覆盖了 外部的模块。 在Python 2.6中,包的代码中的常规导入(没有前面的点号),目前默认为一种先相对再绝对的搜索路径顺序,也就是 说,它们首先搜索包自己的路径。然而,在Python 3.0中,在一个包中导入默认是绝对的——在缺少任何特殊的点语 法的时候,导入忽略了包含包自身并在sys.path搜索路径上的某处查找。