2016-01-23 281 views
-1

我有這個問題了功課:名稱衝突

對於模塊1,模塊2,和客戶端模塊如下圖所示,表明其進口標識符將導致名稱衝突如果導入的標識符是不完全合格。

enter image description here

我回答:
func_2衝突module2module3
func_3衝突之間module2main

之間。然而,在文中列出的答案僅僅是
func_3
我錯了嗎?

謝謝。

+1

請將該圖片中的3個示例複製到您的問題中。 –

+0

你是對的,文字是錯誤的。 –

+0

謝謝Antti。我試圖導入圖像,但是當我發佈時,它變成了鏈接。我是新來的。沒有預覽帖子的方法嗎? 感謝您的幫助。 – jratliff

回答

0

在模塊1中,沒有名稱衝突,因爲模塊1不知道模塊2和客戶端模塊存在。 module2不知道module1和客戶端模塊是否存在。客戶端模塊,但是,進口module1和module2。因此,它定義了func_1一次(在module1中),func_2兩次(在module1和module2中)以及func_3兩次(在module2和客戶端模塊中)。爲了說明,我將寫兩個文件: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有兩個變量,因爲它定義ÿ並導入x。 imported_module有x,因爲它定義了它,但它沒有y。

+0

感謝zondo。這非常有幫助。 – jratliff