Python核心编程第二版 第十二章课后答案
12-1.路径搜索和搜索路径。路径搜索和搜索路径之间有什么不同?
前者是指查找某个文件的操作,后者是去查找一组目录。
12-2.
导入属性。假设你的模块mymodule里有一个foo()函数。
(a)把这个函数导入到你的名称空间有哪两种方法?
(b)这两种方法导入后的名称空间有什么不同?
1 | 第一种将mymodule里的属性全部导入,第二种只导入foo |
12-3.导入“import module”和“from module import*”有什么不同?
* 被直接导入到局部名字空间去了,所以它可以直接使用,而不需要加上模块名的限定。你可以导入独立的项或使用 from module import * 来导入所有东西。
12-4.名称空间和变量作用域。名称空间和变量作用域有什么不同?
名称空间(Namespaces)是名称(标识符)到对象的映射。名称空间分为局部名称空间(Local Namespaces),全局名称空间(Global Namespaces)和内建名称空间(Build-in Namespaces)。
Build-in Namespaces首先被Python解释器加载成为Active Namespaces,由__buildins__模块中的名字构成。
Global Namespaces随后加载为Active Namespaces,可以用globals()内建函数来判断某个名字是否属于全局名称空间。
Local Namespaces在有需要时,也就是如果执行期间调用了某个函数时,被加载为Active Namespaces,可以用locals()内建函数来判断某个名字是否属于局部名称空间。
变量(标识符)的作用域定义为其声明在程序里的作用范围(scope)。参见本书295页。定义在函数内的变量有局部作用域,而在一个模块中最高级别的变量有全局作用域。
注意,所有局部空间的名称都在局部作用范围内。局部作用范围以外的的所有名称都在全局作用范围内。
局部名称空间和作用域会随函数调用不断变化,全局名称空间不变。
下面的图来自原书。加上了中文注释,和一些修改。仅供参考。
#本文来自博客园balian
命名空间的种类
Python中有三种命名空间:
a) 局部,函数内的命名空间就是局部的;
b) 全局,模块内的命名空间就是全局的;
c) 内置,包括异常类型、内建函数和特殊方法,可以代码中任意地方调用;
下面讨论关于名字空间的搜索顺序,先来看张图:
命名空间的可见性(作用域)
a) 内置命名空间在代码所有位置都是可见的,所以可以随时被调用;
b) 全局命名空间和局部命名空间中, 如果有同名变量,在全局命名空间处,局部命名空间内的同名变量是不可见的;
c) 在局部命名空间处,全局命名空间的同名变量是不可见的(只有变量不同名的情况下,可使用 global关键字让其可见)。
12-5.使用__import__()。
(a)使用__import__把一个模块导入到你的名称空间。你最后使用了什么样的语法?
- __import__('sys')
(b)和上边相同,使用__import__()从指定模块导入特定的名字。
- __import__('sys',globals(),locals(),['path']
12-6.扩展导入。创建一个importAs()函数。这个函数可以把一个模块导入到你的名称空间,但使用你指定的名字,而不是原始名字。例如,调用newname=importAs(‘mymodule’)会导入mymodule,但模块和它的所有元素都通过新名称newname或newname.attr访问。这是Pytho2. 0引入的扩展导入实现的功能。
import ... as .....
__EOF__

本文链接:https://www.cnblogs.com/jiaoyang77/p/7498419.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗