【问题标题】:Name clashes in Python modulesPython 模块中的名称冲突
【发布时间】:2016-04-30 00:54:42
【问题描述】:

我有这个家庭作业问题:

对于下面显示的模块 1、模块 2 和客户端模块,请指出如果导入的标识符不是完全限定的,哪些导入的标识符会导致名称冲突。

我回答:
module2module3 之间发生冲突
func_2 module2main 之间发生冲突

但是,文中列出的答案只是
func_3
我错了吗?

谢谢。

【问题讨论】:

  • 请将图片中的 3 个示例复制到您的问题中。
  • 你是对的,而文字是错误的。
  • 谢谢安蒂。我试图导入图像,但是当我发布时,它变成了链接。我是新来的。没有办法预览帖子吗?感谢您的帮助。
  • 不是图片,而是手工在图片中写代码。

标签: python name-clash


【解决方案1】:

在module1中,没有名字冲突,因为module1不知道module2和client module存在。 module2 不知道 module1 和 client 模块存在。但是,客户端模块会导入模块 1 和模块 2。因此,它定义了 func_1 一次(在模块 1 中)、两次 func_2(在模块 1 和模块 2 中)和 func_3 两次(在模块 2 和客户端模块中)。为了便于说明,我将编写两个文件:main_module 和imported_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。

【讨论】:

  • 谢谢 zondo。这很有帮助。
猜你喜欢
  • 2011-08-21
  • 2011-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-18
  • 1970-01-01
相关资源
最近更新 更多