[英]Import module, that import another module. Python
我很好奇當我們導入一個模塊然后導入另一個模塊時會發生什么。 所以我創建了兩個模塊:module1和module2。
模塊1:
import random
print(random.randint(0,10))
print("module1 work")
模塊2:
import module1
print("module2 work")
當我運行module2時,它給我這個輸出:
1
module1 work
module2 work
所以,當我導入module1
時,我確定我確實導入了random
。 但是當我輸入Shell print(random.randint(0,10))
它會拋出一個NameError: name 'random' is not defined
。 所以random
未從module1
導入。 但是在這種情況下為什么module2
打印1
,並沒有拋出與Shell相同的錯誤?
每個模塊都有自己的范圍(或命名空間,如果您更熟悉該術語)。 如果要從module2
訪問random
,則需要在module2
導入它。 解釋器共享您執行的模塊的范圍,因此只能訪問在該模塊的全局命名空間中聲明的變量。 如果要從僅導入了module2
的解釋器中訪問random
,則需要指定module1.random
。
或者,您可以使用from module1 import *
替換import module1
。 這將復制所有內容,包括random
引用。 所以random
可以全球訪問。
這是因為您實際上並未將隨機導入shell,而只是包含模塊的文件。
我們可以使用現有模塊作為示例,例如tkinter打開時:
import enum
import sys
它們會導入到Tkinter模塊中,但是當您導入Tkinter時,它們不會隨附它。
為了把它盡可能簡單的module1
已經隨機進口的,但imporing module1
不會也導入random
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.