我有这个家庭作业问题:
对于下面显示的模块 1、模块 2 和客户端模块,请指出如果导入的标识符不是完全限定的,哪些导入的标识符会导致名称冲突。
我回答:和之间的
func_2
冲突module2
和module3
func_3
冲突module2
main
但是,文中列出的答案只是
func_3
。
我错了吗?
谢谢你。
我有这个家庭作业问题:
对于下面显示的模块 1、模块 2 和客户端模块,请指出如果导入的标识符不是完全限定的,哪些导入的标识符会导致名称冲突。
我回答:和之间的
func_2
冲突module2
和module3
func_3
冲突module2
main
但是,文中列出的答案只是
func_3
。
我错了吗?
谢谢你。
在 module1 中,没有名称冲突,因为 module1 不知道 module2 和客户端模块存在。module2 不知道 module1 和 client 模块存在。但是,客户端模块会导入模块 1 和模块 2。因此,它定义了一次func_1(在module1中),两次func_2(在module1和module2中),两次func_3(在module2和client模块中)。为了说明,我将编写两个文件:main_module 和imported_module。
导入的模块看起来像这样:
x = True
print 'x in imported_module: %s' % ('x' in locals())
print 'y in imported_module: %s' % ('y' in locals())
main_module 看起来像这样:
y = True
from imported_module import *
print "" # put a blank line between what imported_module prints and what
# main_module prints
print 'y in main_module: %s' % ('y' in locals())
print 'x in main_module: %s' % ('x' in locals())
运行 main_module 的结果:
y in imported_module: False
x in imported_module: True
y in main_module: True
x in main_module: True
main_module 有两个变量,因为它定义了 y 并导入了 x。import_module 有 x,因为它定义了它,但它没有 y。